2010-02-17 56 views
1

我有一個小問題,它真的讓我煩惱。collection_select並沒有被提交數據庫

我有控制器中的所有標準腳手架代碼給我標準的CRUD功能。

的collection_select形式助手,在我看來:

<%= collection_select(:link,:category_id,@categories,:id,"name") %> 

鏈接表有CATEGORY_ID列。這是張貼OK,因爲在調試時它給:` ... 「鏈接」=> { 「名」=> 「」, 「CATEGORY_ID」=> 「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 

從View

<% form_for @link do |f| %> 
<%= f.label :name %><br /> 
<%= f.text_field :name %>...... 
+0

你也可以發佈你的控制器代碼抓取參數併發送給模型的位?你的表單有這個collection_select幫助器的開始嗎? – nas 2010-02-17 11:29:58

回答

2

終於解決了它,我查了日誌,它有這樣的錯誤:

WARNING: Can't mass-assign these protected attributes: category_id 

我加入了「CATEGORY_ID」在我的模型attr_accesible」,它工作正常。

2

形式從

<%= collection_select(:link,:category_id,@categories,:id,"name") %> 

更改collection_select到

<%= f.collection_select(:category_id,@categories,:id,"name") %> 
+0

仍然不起作用,沒有任何數據輸入到數據庫中,並且validates_presence_of仍然失敗。 – vectran 2010-02-17 20:45:16

相關問題