ruby on rails - 別名 - レールのネストされたフォーム-has_manyリレーションの属性にアクセスする




rails アソシエーション (3)

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

このapi dockリンクには、1対1、1対多を含む多くのネストされた属性の例がリストされています。 非常に役立ちます!

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

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

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

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



これを行うには、 ' accepts_nested_attributes_for 'を使うことができます。 フォームに少しトリックがあります:

特異なものを使用し、各プロファイルに対してfields_forを次のように呼び出す必要があります。

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

注目すべき just :profileの代わりにprofile_attributes です





nested-forms