2012-04-15 2 views
1

쉬운 질문에 사과드립니다.사용자 자원 생성과 동시에 기본 매개 변수를 사용하여 계정 자원을 만들 수 있습니까?

나는 자원

resources :users do 
    resources :accounts 
end 

을 중첩하고 난 새 사용자 사용자가 생성 될 때 백그라운드에서 작성에 대한 계정을 갖고 싶어.

나는 사용자

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

form_for

UserController

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

을 시도하지만

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

나는 또한 계정에 기본 데이터를 전달하려면이 오류가 발생합니다. 예 : balance_in_cents => 0 등 "

도움을 주셔서 감사합니다.

답변

0

사용자의 has_many 계정이있는 경우 컨트롤러의 create 메소드에 @account = @user.accounts.build이 있어야합니다. 그러면 해당 사용자의 계정이 만들어집니다.

railscast은 중첩 된 양식에 매우 유용하며 연관을위한 레일 가이드는 here입니다.

+0

당신의 솔루션에 넣습니다 : _ 이름이 '사용자'와 관련이 없습니다. 아직 정의되지 않았습니까? _ – ajbraus

+0

** @ account = @ user.accounts.create ** 오류가 발생했습니다. 계정에서 create를 호출하기 전에 부모 (@user)를 저장해야합니다 ._ – ajbraus

+0

있음 귀하의 사용자 모델 has_many 계정이 있어야합니다 귀하의 계정 모델에서 당신은 belongs_to 사용자가 있어야합니다 – Edward

0

귀하의 form_for이 올바른 경로를 생성하지 않습니다. HTTP 메소드에 대해 종종 혼란스러워집니다. 필요한 것은 무엇입니까

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