simple_form中的嵌套属性返回质量分配错误 [英] nested attributes in simple_form returns mass assignment error
本文介绍了simple_form中的嵌套属性返回质量分配错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
型号:
class Topic < ActiveRecord::Base
has_many :posts, :dependent => :destroy
validates :name, :presence => true,
:length => { :maximum => 32 }
attr_accessible :name, :post_id
end
class Post < ActiveRecord::Base
belongs_to :topic, :touch => true
has_many :comments, :dependent => :destroy
accepts_nested_attributes_for :topic
attr_accessible :name, :title, :content, :topic, :topic_attributes
end
查看:
<%= simple_form_for :post, :url => { :controller => :posts, :action => "create" } do |f| %>
<h1>Create a Post</h1>
<%= f.input :name, :label => false, :placeholder => "Name" %>
<%= f.input :title, :label => false, :placeholder => "Title" %>
<%= f.input :content, :label => false, :placeholder => "Content", :as => :text %>
<%= f.simple_fields_for :topic do |topic_form| %>
<%= topic_form.input :name, :label => false, :placeholder => "Topic" %>
<% end %>
<%= f.button :submit, "Post" %>
<% end %>
控制器:
def create
topic_name = params[:post].delete(:topic)
@topic = Topic.find_or_create_by_name(topic_name)
@post = Post.new(params[:post])
@post.topic = @topic
respond_to do |format|
if @post.save
format.html { redirect_to(@post, :notice => 'Post was successfully created.') }
else
format.html { render :action => "new" }
end
end
end
当我填写并提交/posts/new表格时,终端显示:
When I fill out and submit the /posts/new form the terminal reads:
Started POST "/posts" for 127.0.0.1 at 2011-05-06 18:30:10 -0700
Processing by PostsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Gg2T18NRiYMe5UMReSfvwwiDTQSrjdnjiEdyDcP1MuI=", "post"=>{"name"=>"25", "title"=>"25", "content"=>"25", "topic"=>{"name"=>"25"}}, "commit"=>"Post"}
Topic Load (0.2ms) SELECT "topics".* FROM "topics" WHERE "topics"."name" = '25' LIMIT 1
AREL (0.9ms) INSERT INTO "topics" ("name", "created_at", "updated_at") VALUES ('25', '2011-05-07 01:30:10.237406', '2011-05-07 01:30:10.237406')
Topic Load (0.7ms) SELECT "topics".* FROM "topics" ORDER BY updated_at DESC
AREL (0.8ms) INSERT INTO "posts" ("name", "title", "content", "topic_id", "created_at", "updated_at") VALUES ('25', '25', '25', 25, '2011-05-07 01:30:10.406437', '2011-05-07 01:30:10.406437')
AREL (0.3ms) UPDATE "topics" SET "updated_at" = '2011-05-07 01:30:10.415141' WHERE "topics"."id" = 25
Redirected to http://0.0.0.0:3000/posts/25
Completed 302 Found in 281ms
我尝试在主题模型中将:post_attributes
添加到attr_accessible
,但这并不能解决.可以是表格吗?
I tried adding :post_attributes
to attr_accessible
in the Topic model, but that doesn't fix it. Could it be the form?
推荐答案
您不应该对simple-fields_for使用:topic吗?
Shouldn't you be using simple_fields_for for :topic?
simple_form_for @post do |f|
f.simple_fields_for :topic do |topic_form|
topic_form.input :name
end
end
这篇关于simple_form中的嵌套属性返回质量分配错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文