如何在创建用户资源的同时使用默认参数创建帐户资源?

时间:2012-04-15 15:15:37

标签: ruby-on-rails nested-resources

为简单的问题道歉。

我有嵌套资源

 resources :users do
  resources :accounts
 end

我希望在创建用户时在后台创建一个新用户帐户。

我试过

UserController

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 =&gt; 0等”

感谢你们提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

如果您的用户拥有多个帐户,则在控制器的create方法中,您应该拥有@account = @user.accounts.build。然后,这将为该用户建立一个帐户。

railscast对于嵌套表单非常有用,关联的rails指南为here

答案 1 :(得分:0)

您的form_for未生成正确的路线。它经常对HTTP方法感到困惑。你需要的是

<%= form_for([@user, @account], :url => users_path, :method => :post) do |form| %>
相关问题