25

ユーザーとプロファイル モデルがあります。1 人のユーザーが複数のプロファイルを持つことができます。ユーザー作成プロセス中に、ユーザー モデルのプロファイル セクション (電話番号) から 1 つの情報だけにアクセスする必要があります。したがって、私はそれをやり遂げようとしていますattr_accessible。私の user.rb は次のようになります。

has_many :profiles
attr_accessible :handle, :email, :password, :profile_mobile_number
attr_accessor : :profile_mobile_number

私が直面している問題は、user.rb のメソッドでゲッター メソッド profile_mobile_number を呼び出そうとすると (メソッドはプライベートですが、問題ではないと思います)、null 値を取得していることです。users/new.html.erb フォームで以下を使用します

私の質問は、これを行う正しい方法は何ですか? <% f.fields_for :profile do |ff| -%>orを使用する必要があります<% f.fields_for :profiles do |ff| -%>(2 番目は複数形であることに注意してください)。複数の :profiles を使用すると、フォームにフィールドが表示されません。ここで何が欠けていますか?モデル user.rb で使用する必要がある時制は何ですか? :profile_phone_number または :profiles_phone_number? ありがとう。

4

4 に答える 4

21

次のようなことができます。

<% form_for @user, :url => { :action => "update" } do |user_form| %>
  ...
  <% user_form.fields_for :profiles do |profiles_fields| %>
     Phone Number: <%= profiles_fields.text_field :profile_mobile_number %>
   <% end %>
<% end %>

しかし、すでに関連付けがあるため、「accepts_nested_attributes_for」を使用することもできます

于 2010-02-12T05:54:53.810 に答える
13

RailsCasts Nested Model Formを見る必要があります。ライアン・ベイツの素晴らしい仕事に
感謝します。

于 2010-02-16T11:32:15.480 に答える
3

http://apidock.com/rails/v3.2.8/ActionView/Helpers/FormHelper/fields_for

このAPIドックリンクには、1対1、1対多などの多くのネストされた属性の例がリストされています。とても助かります!

于 2013-01-28T09:04:21.630 に答える
1

' accepts_nested_attributes_for 'を使用してこれを行うことができます。しかし、フォームにはちょっとしたトリックがあります。

次のように、単数形を使用し、プロファイルごとにfields_forを呼び出す必要があります。

<% form_for @user do |f| -%>
<% @user.profiles.each do %>
<% f.fields_for :profile_attributes, profile do |ff| -%>
<% end %>

:profileだけでなく、:profile_attributesであることに注意してください。

于 2010-02-12T13:38:56.613 に答える