命名约定到实例变量?

时间:2011-11-13 05:08:24

标签: ruby-on-rails model-view-controller

我有一个模型ProductFeature

一个名为product_feature_controller.rb

的控制器

我正在为这个控制器编写CRUD的'edit'方法。在edit方法中,我创建了一个名为@productFeature的实例变量,并将其设置为ProductFeature.find(:id),并将此实例变量发送到我的视图以供form_for(:product_feature)使用。我发现我的表单不会用我正在提取的记录中的当前数据填充其字段。拔毛几个小时之后,我突然意识到我的错误就像我的实例变量一样。

它应该命名为@product_feature而不是@productFeature。这似乎是一个微不足道的细节,但我真的很想知道为什么会这样。这怎么工作?我的意思是Rails如何知道根据实例变量的命名方式填充我的表单?我希望我的问题很明确,只是寻求进一步的启发。

1 个答案:

答案 0 :(得分:1)

因为符号:product_feature(在form_for中)将根据该符号查找实例变量。它不进行任何转换,并且将查找@product_feature变量。只要它们匹配,你应该没问题,但Ruby世界在单词之间使用下划线。

此外,模型应按惯例以主要资本ProductFeature命名。我不知道这是否会引起任何问题,但这与常规相反。