2011-05-09 5 views
0

작동하도록 form_for 나는/응용 프로그램 /보기/사용자/쇼에서레일 협회 -

class MembersController < ApplicationController 

    def create 
    @user = User.find(params[:user_id]) 
    @member = @user.members.build(params[:member]) 
    if @member.save 
     flash[:success] = "Member created!" 
     redirect_to root_path 
    else 
     render 'pages/home' 
    end 
    end 
end 

이 내 회원 컨트롤러에서 사용자

class Member < ActiveRecord::Base 

    attr_accessible :name 
    belongs_to :user 

end 


class User < ActiveRecord::Base 

    attr_accessible :name 
    has_many :members, :dependent => :destroy 

end 

을 속한 회원의 모델이 점점 어려움. html.erb 나는

<%= form_for @member do |f| %> 

    <div class="field"> 
    <%= f.text_area :name %> 
    </div> 
    <div class="actions"> 
    <%= f.submit "Submit" %> 
    </div> 
<% end %> 

이있다 그러나 나는 다음과 같은 오류가 발생합니다 : 무기 호에 대한 정의되지 않은 메서드`MODEL_NAME을 ' 클래스 : 클래스

Users (사용자) 컨트롤러 내 show 액션도 '새로운'내가 변화 시도

방법이 포함되어

def show 
     @user = User.find(params[:id]) 
     @members = Member.new 
     @title = @user.name 
    end 

입니다

Extracted source (around line #18): 

15: 
16: <h1 class="member">What's up?</h1> 
17: 
18: <%= form_for @member do |f| %> 

님의 USER_ID 다음 MembersController의 ID를하지만, 이것도 작동하지 않습니다. 여기서 내가 뭘 잘못하고 있니? 사전

+0

show 액션을 표시하십시오. – fl00r

+0

컨트롤러에 'new' 액션이 정의되어 있습니까? 귀하의 양식은'/ members/new'에 있습니까? –

+0

Member.new는 사용자 컨트롤러의 표시 작업에 정의됩니다. 양식은 app/views/users/show.html.erb에 있습니다. – Zakoff

답변

0

@ user.id를 양식의 숨겨진 필드로 전달해야 연결이 작동합니다.

0

;-) @member = Member.new에 의해 @members = Member.new을 대체하려고에

감사합니다!

+0

구성원 컨트롤러에서 빌드 방법을 사용하고 있다면 여전히 Member.new 줄이 필요합니까? @member = @ user.members.build (params [: member]) – Zakoff

+0

사용자 클래스에 멤버를 만들려면 중첩 모델을 glade해야합니다. http://weblog.rubyonrails.org/2009/1/26/nested-model-forms – Hartator