1

我有两个模型,称为“页面”和“区域”

有如下关系:

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 表单中,该字段的文本值被解释为“页面”而不是“页面 id”。

不管这可能不是一个好的做法,或者有一种手动更改标签值的变通方法;我需要了解为什么会这样。有人可以解释一下。即使我在 Area 控制器的新操作方法中使用调试器,对象 @area 也会正确显示 page_id 属性。我假设 f.label 在这里做了一些奇怪的事情。

我正在使用导轨 3.2.7。

4

2 回答 2

2

这就是它的工作原理,Rails 假设在打印到表单时something_id应该会变成这样。something如果你想让它在任何地方都变成真正的“page_id”,打开config/locales/en.yml并把它放在那里:

en:
  activerecord:
    attributes:
      area:
        page_id: "page_id"

你去了,现在它将page_id在这个标签和所有其他地方(包括验证和所有)中调用。

于 2012-08-03T04:44:29.090 回答
1

默认情况下,Rails 会删除标签中的 _id。f.label 中的下一个参数是一个字符串,它将成为标签的内部 html:

<%= f.label :page_id, "Page" %>

输出:

<label for="area_page_id">Page</label>
于 2012-08-03T04:41:38.187 回答