collection_select并没有提交数据库

时间:2010-02-17 11:17:13

标签: ruby-on-rails ruby

我遇到了一个小问题,这真的让我烦恼。

我在控制器中拥有所有标准脚手架代码,以便为我提供标准的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 %>......

2 个答案:

答案 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',它运行正常。