【问题标题】:Rails form create is not seeing the parameter passed to itRails 表单创建没有看到传递给它的参数
【发布时间】:2014-12-10 06:06:18
【问题描述】:

感谢阅读,Rails 新手,但正在尝试构建一个表单来传递参数。但是,将参数输入表单后,创建页面中的验证没有看到它,并给我一个错误。但是日志显示参数已输入...我也在使用 simple_form gem。

控制器:

类FoundsController

  def index
    @found = Found.all
  end

  def new
    @found = Found.new
  end

  def create
    @found = Found.new(found_params)
    if @found.save
        redirect_to "/founds#index"
    else
        render "new"
    end
  end
end

 def found_params
    params.require(:floc).permit(:ftitle, :fdescription, :fcontact)
end

新表单页面:

<h1>Founds#new</h1>
<p>Find me in app/views/founds/new.html.erb</p>

<%= simple_form_for @found do |form| %>
  <%= form.input :floc, label: "floc" %>
  <%= form.input :fcontact, label: "fcontact" %>
  <%= form.input :fdescription, label: "fdescription" %>
  <%= form.input :ftitle, label: "ftitle" %>
  <%= form.button :submit %>
<% end %>

错误:参数丢失或值为空:floc

def found_params
    params.require(:floc).permit(:ftitle, :fdescription, :fcontact)
end


Request

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"bJ1bUhd3G8z4S1QV+XsEAHmOcdSQyQxVS0rOSAsq6YANvz9ED7lFTME6falij4nrXkWEypWsSnPW7k9YHFGhDQ==",
 "found"=>{"floc"=>"location",
 "fcontact"=>"contact",
 "fdescription"=>"descript",
 "ftitle"=>"title"},
 "commit"=>"Create Found"}

【问题讨论】:

    标签: ruby-on-rails ruby forms parameters


    【解决方案1】:

    除了强参数外,一切看起来都很好

    应该是params.require(:found).permit(:floc, :ftitle, :fdescription, :fcontact)

    你告诉 Rails 传入的参数必须有 :found 键,嵌套在它下面的是你真正关心的参数。在这些参数中,只有允许的参数才能通过。不允许的参数不会通过但不会抛出错误。

    【讨论】:

    • 完美!谢谢,我错过了关键,我的假设是 .require(floc) 意味着我不能在没有 floc 参数的情况下传递表单......不包括或定义强参数片也给了我同样的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多