2014-11-08 76 views
0

我的代碼行:Rails的選擇給出了未定義的方法錯誤

f.select(:birth_day, options_for_select((1..31)), {:include_blank => false }, {:id =>  'select1'}) 

然而,當我跑我的網站的相關部分也給出了#

未定義的方法`birth_day」有誰知道爲什麼會發生這種情況? birth_day顯然不是一種方法,而是選擇標籤提交的參數的名稱。

任何幫助,將不勝感激,這種形式的所關聯

回答

1

模型不具有方法(均未場)稱爲birth_day

您可能要將birth_day字段添加到您的模型 - 或將attr_accessor :birth_day添加到此模型(請注意,此字段不會保存在數據庫中 - 但您可以在回調中使用它)。

+0

非常感謝,如果不適合你,我永遠不會想到這一點 – dinosaurW 2014-11-08 18:48:19

1

select_tagf.select是完全不同的方法,它們不是等價的。有select_tag你可以聲明任何你想要的,如:

form_tag '/some_path' do 
    select_tag :birth_day, options_for_select((1..31)) 
end 

記住select_tag :birth_day意味着它不與任何對象關聯(這樣birth_day可能是控制器params[:birth_day]中訪問),但再次,它沒有關聯與任何物體。

有,另一方面f.select,強制你使用form_for,e.g:形式的

form_for @user do |f| 
    f.select :birth_day, options_for_select((1..31)) 
end 

這樣的定義,強制執行@user必須有birth_day字段中,聲明爲attr_accessor :birth_day,或在數據庫中給出。

相關問題