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

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

这个railscast对于嵌套表单非常有用,关联的 rails guide 在这里

于 2012-04-15T15:35:28.460 回答
0

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

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