Ruby on rails 如何处理rails 4中的嵌套形式和强参数
我有一个rails 4应用程序,我尝试在其中填充Post和Detail模型。 模型之间的关系是有一个。 我有一个邮政控制器:Ruby on rails 如何处理rails 4中的嵌套形式和强参数,ruby-on-rails,ruby-on-rails-4,nested-forms,Ruby On Rails,Ruby On Rails 4,Nested Forms,我有一个rails 4应用程序,我尝试在其中填充Post和Detail模型。 模型之间的关系是有一个。 我有一个邮政控制器: def post_params params.require(:post).permit(:title, :email, :tel, :detail_attributes => [:id, :description, :post_id]) end 我的表格是: <%= f.fields_for @post.detail do |builder| %>
def post_params
params.require(:post).permit(:title, :email, :tel, :detail_attributes => [:id, :description, :post_id])
end
我的表格是:
<%= f.fields_for @post.detail do |builder| %>
<%= render "detail_form", detail: builder%>
<% end %>
`
当我检查post_参数时,我得到:
{“标题”=>,“电子邮件”=>“toto@example.com“,”电话“=>”}
如何将详细信息属性列为白名单
谢谢请试试这个
class Post < ActiveRecord::Base
has_one :detail
accepts_nested_attributes_for :detail, allow_destroy: true
end
<%= form_for @ost do |f| %>
<%= f.fields_for :detail do |builder| %>
<%= render "detail_form", detail: builder%>
<% end %>
<% end %>
class Post
您的strong参数行要求
/允许
代码看起来正确。如Prashant4224所回答的,您是否在model.rb中包含了的接受嵌套属性
class Post < ActiveRecord::Base
has_one :detail
accepts_nested_attributes_for :detail
end
如果模型中已接受嵌套参数,则表单可能无法发送这些参数。您应该在调用post_params之前检查参数,并从那里调试视图代码。我支持同时检查params和post_params的想法,这样可以更容易地查看问题发生的位置:在传入的params中,或者在post_params方法中。
def post_params
params.require(:post).permit(:title, :email, :tel, :detail_attributes => [:id, :description, :post_id, :_destroy])
end