我遇到了一个小问题,这真的让我烦恼。
我在控制器中拥有所有标准脚手架代码,以便为我提供标准的CRUD功能。
我认为collection_select表单助手是:
<%= collection_select(:link,:category_id,@categories,:id,"name") %>
链接表有一个category_id列。这是正确的发布,因为在调试它时会给出:` ... “链接”=&GT; { “名称”=&gt; “中”, “CATEGORY_ID”=&gt; “中1”, ...
但是它没有被提交到数据库,并且category_id的任何验证都失败了。
控制器方法:
def new
@link = Link.new
@categories = Category.find(:all)
end
def create
@link = Link.new(params[:link])
if @link.save
flash[:notice] = "Successfully created link."
redirect_to @link
else
render :action => 'new'
end
end
视图中的表单
<% form_for @link do |f| %>
<%= f.label :name %><br />
<%= f.text_field :name %>......
答案 0 :(得分:2)
从
更改collection_select <%= collection_select(:link,:category_id,@categories,:id,"name") %>
到
<%= f.collection_select(:category_id,@categories,:id,"name") %>
答案 1 :(得分:2)
最后解决了它,我检查了日志,它有这个错误:
WARNING: Can't mass-assign these protected attributes: category_id
我在我的模型中将'category_id'添加到了attr_accesible',它运行正常。