2017-12-26 27 views
0

こんにちは私はフォーム/質問/回答を既に開発したアプリケーションのようなGoogleFormを開発しなければなりません。モデルポール(フォームはhas_manyポーリングとポールはフォームに属します)。私はこの間違いを持っ​​ていますhttps://projet.../formulaires/131/polls/newと私はそれを処理する方法を理解していません。NoMethodError in Polls#new - 定義されていないメソッド `polls 'for nil:NilClass

マイroutes.rbを:

resources :formulaires do 
    resources :polls 
    end 

マイpolls_controller:

def index 
    @polls = @formulaire.polls.order("created_at DESC") 
end 

def show 
end 

def new 
    @poll = Poll.new 

end 

def create 
    @poll = @formulaire.poll.new(poll_params) 
    @polls = @formulaire.polls.order("created_at DESC") 

    if @poll.save 
     redirect_to formulaire_polls_path(@formulaire) 
    end 
end 

def poll_params 
    params.require(:poll).permit(:formulaire_id, :question_id, :answer_id, :nom) 
end 

end 

そして、それをテストするために、私のポーリング/ _formビュー:

あなたが定義した
<%= form_for([@formulaire, @formulaire.polls.new]) do |f| %> 

<h2> Test</h2> 
    <%= f.label :nom %> 
    <%= f.submit %> 
<% end %> 

答えて

0
@polls = @formulaire.polls.order("created_at DESC") 

@formulaire?あなたがする必要がある

...

@formulaire = Formulaire.find(params[:formulaire_id] 
@polls = @formulaire.polls.order("created_at DESC") 

はあなたのcreate方法で同じ回線を持っている必要があります。実際には、すべてのCRUDメソッドの前に呼び出すbefore_actionに@formulaireを割り当てることは意味があります。

+0

ありがとうございます@SteveTurczyn私は私の '新しい'方法でそれを追加しました – user9007028

関連する問題