Rails关联的属性标签解释不正确

时间:2012-08-03 04:37:17

标签: ruby-on-rails

我有两个名为'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。

2 个答案:

答案 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>