2014-11-08 75 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,或在数据库中给出。

相关问题