我有两个名为'Page'和'Area'的模型
关系如下:
class Page < ActiveRecord::Base
has_many :areas
end
class Area < ActiveRecord::Base
belongs_to :page
attr_accessible :content, :name, :order, :title , :page_id
end
我有一个视图,用于创建我接受page_id以将该区域与页面相关联的区域:
<%= f.label :page_id %><br /> #this is being interpreted incorrectly
<%= f.text_field :page_id %>
使用page_id属性正确返回action方法中的表单值。但是在html表单中,字段的文本值被解释为“Page”而不是“page id”。
无论这可能不是一个好的做法,或者有人手动改变标签的价值;我需要明白为什么会这样。有人可以解释一下。即使我在区域控制器的新操作方法中使用调试器,对象@area也会正确显示page_id属性。我假设f.label在这里做了一些奇怪的事情。
我正在使用rails 3.2.7。
答案 0 :(得分:2)
这就是它的工作原理,Rails假设something_id
在打印到表单时应该成为something
。如果你想在任何地方真正做到“page_id”,请打开config/locales/en.yml
并将其放在那里:
en:
activerecord:
attributes:
area:
page_id: "page_id"
然后你去了,现在它将被称为page_id
在这个标签和所有其他地方(包括验证和所有)。
答案 1 :(得分:1)
默认情况下,Rails会将_id放在标签中。 f.label中的下一个参数是一个字符串,它将是标签的内部html:
<%= f.label :page_id, "Page" %>
输出:
<label for="area_page_id">Page</label>