1

「ページ」と「エリア」という2つのモデルがあります

関係は次のとおりです。

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 %>

actionメソッドのフォーム値は、page_id属性を使用して正しく返されます。ただし、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 に答える