1

SubscriptionモデルにネストされたモデルがありUserます。

新しいサブスクリプションを追加するフォームを作成しようとしています/subscriptions/new

このフォームに表示されるフィールドは、親Userモデルに保存されます。

私のnew行動では、私は単に持っています

@subscription = Subscription.new

質問はUser、サブスクリプションの新しい form_for 内にこの親のフィールドを追加する方法ですか? サブスクリプションフォームは、どういうわけか親のネストです。

4

1 に答える 1

1

ユーザーモデルとサブスクリプションモデルのコードを回答に含めて、関係を確認できると非常に役立ちます。あなたのコメントに基づくと、あなたは次のことをしているようです:

class User < ActiveRecord::Base
  has_many :subscriptions
  accepts_nested_attributes_for :subscription 
end

class Subscription < ActiveRecord::Base
  belongs_to :user
end

ユーザーとサブスクリプションのデータを同じ形式でキャプチャしたいようです。これを行うには、ネストされたフォームでfields_forを使用して、フォームをネストする必要があります(accepts_nested_attributes_for上記に注意してください)。

<%= form_for @user do |user_form|%> 
  <%= user_form.text_field :phone %>
  <%= user_form.fields_for :subscription @user.subscription.new do |subscription_form|%>
    <%= subscription_form.text_field :name %>
  <% end %>
<% end %>

次に、コントローラーのcreateメソッドで、次のように呼び出すことができます。

@user = User.create(params[:user])

このコードはテストされておらず、私はあなたのセットアップについて多くの仮定をしていますが、うまくいけば、これであなたが始めるのに十分でしょう。詳細については、fields_forのドキュメントをご覧ください:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for

于 2012-05-17T23:31:22.983 に答える