民意调查中的NoMethodError #new - undefined method`polls'为零:NilClass

时间:2017-12-26 23:43:46

标签: ruby-on-rails forms

您好我必须开发一个类似GoogleForm的应用程序我已经开发了表单/问题/答案,现在我必须让我的表单“回答”#39;所以我创建了一个模型Poll(一个Form has_many民意调查和一个民意调查属于一个表格)。我有这个错误https://projet.../formulaires/131/polls/new,我不明白如何处理它。

我的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 %>

1 个答案:

答案 0 :(得分: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可能是有意义的。