我正在尝试使用嵌套路由执行一个form_for,遵循Ruby指南中的博客和评论示例(http://guides.rubyonrails.org/getting_started.html#adding-a-route-for-comments)。
我正在申请创建包含大量问题的调查,问题在一个小组中,每个问题都有一个或多个答案选项。
这是reoutes.rb
resources :groups do
resources :questions do
resource :answers
end
end
控制器运行良好,当我显示创建的组时,可以看到问题并使用嵌套的form_for创建问题:
基团/ show.html.erb
<h2>Group: <%= @group.desc %> </h2>
<h3>Questions</h3>
<% @group.questions.each do |q| %>
<%= q.desc%> <%= link_to 'Destroy question', [@group, q], :confirm => 'Are you sure?', :method => :delete %> <br/>
<%end%>
<h4>New question</h4>
<%= form_for([@group, @group.questions.build]) do |f| %>
<div class="field">
<%= f.label 'Label: '%>
<%= f.text_field :desc, :size => 100%>
<%= f.submit 'Create question' %>
</div>
<% end %>
<br />
现在我需要展示答案和一些方法来将问题插入到问题中。要显示答案在@ group.questions.each块中的q.answers.each中运行良好。但是,我要做的是制作一个form_for作为答案,我尝试了下面的代码但不起作用:
基团/ show.html.erb
...
<% @group.questions.each do |q| %>
<%= q.desc%> <%= link_to 'Destroy question', [@group, q], :confirm => 'Are you sure?', :method => :delete %> <br/>
<!-- New answer -->
<%= form_for([q, q.answers.build]) do |f| %>
<div class="field">
<%= f.label 'Label: '%>
<%= f.text_field :desc, :size => 100%>
<%= f.submit 'Create answer' %>
</div>
<% end %>
<%end%>
<h4> New question<h4>
...
Rails出错:
未定义的方法 `question_answers_path'
当我尝试使用form_for([q,q.answers.build])时。
任何帮助?
答案 0 :(得分:1)
您在表单中为事项指定对象的顺序,您拥有嵌套在组下的资源然后问题然后最终答案。您需要使用form_for [g,q,q.answers.build]
之类的内容。如果该dosnt工作编辑您的帖子以包含rake routes
的内容,我们可以从那里开始。