我有一个模型ProductFeature
一个名为product_feature_controller.rb
我正在为这个控制器编写CRUD的'edit'方法。在edit方法中,我创建了一个名为@productFeature
的实例变量,并将其设置为ProductFeature.find(:id)
,并将此实例变量发送到我的视图以供form_for(:product_feature)
使用。我发现我的表单不会用我正在提取的记录中的当前数据填充其字段。拔毛几个小时之后,我突然意识到我的错误就像我的实例变量一样。
它应该命名为@product_feature而不是@productFeature。这似乎是一个微不足道的细节,但我真的很想知道为什么会这样。这怎么工作?我的意思是Rails如何知道根据实例变量的命名方式填充我的表单?我希望我的问题很明确,只是寻求进一步的启发。
答案 0 :(得分:1)
因为符号:product_feature
(在form_for
中)将根据该符号查找实例变量。它不进行任何转换,并且将查找@product_feature
变量。只要它们匹配,你应该没问题,但Ruby世界在单词之间使用下划线。
此外,模型应按惯例以主要资本ProductFeature
命名。我不知道这是否会引起任何问题,但这与常规相反。