1

簡単な質問で申し訳ありません。

ネストされたリソースがあります

 resources :users do
  resources :accounts
 end

ユーザーが作成されたときに、バックグラウンドで新しいユーザーのアカウントを作成したいと考えています。

私は試した

ユーザーコントローラー

def create
    @user = User.new(params[:user])
    @account = Account.new(params[:account])
end

form_for ユーザー

<%= form_for([@user, @account]) do |f| %>
. . . 
<%= f.submit %>

しかし、私はこのエラーが発生します

 No route matches {:action=>"new", :controller=>"accounts"}

また、アカウントにデフォルトのデータを渡したいです。「たとえば、balance_in_cents => 0 など」

皆様のご協力に感謝いたします。

4

2 に答える 2

0

form_for が正しいルートを生成していません。HTTP メソッドについてよく混乱します。必要なのは

<%= form_for([@user, @account], :url => users_path, :method => :post) do |form| %>
于 2012-04-15T15:58:26.663 に答える
0

ユーザーが has_many アカウントを持っている場合、コントローラーの create メソッドに@account = @user.accounts.build. これにより、そのユーザーのアカウントが作成されます。

このRailscastは、ネストされたフォームに非常に役立ちます。関連付けに関する Rails ガイドは、こちらにあります。

于 2012-04-15T15:35:28.460 に答える