Ruby on rails 用于嵌套路线的Rails 3 form_

Ruby on rails 用于嵌套路线的Rails 3 form_,ruby-on-rails,nested-forms,form-for,nested-form-for,Ruby On Rails,Nested Forms,Form For,Nested Form For,我正试图按照Ruby指南中的博客和评论的例子,用嵌套的路由为您创建一个表单(http://guides.rubyonrails.org/getting_started.html#adding-a-route-for-comments) 我正在做一个应用程序来创建一个包含很多问题的调查,这些问题是分组的,每个问题都有一个或多个答案选项 这是reoutes.rb resources :groups do resources :questions do resource :an

我正试图按照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
控制器工作正常,当我展示一个创建的组时,可以看到这些问题,并使用下面的嵌套形式_创建问题:

groups/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 />
组:
问题
“你确定吗?”,:method=>:delete%>
新问题 100%>
现在,我需要展示答案,并以某种方式插入该问题的答案。要显示答案,请使用q.answers.each inside@group.questions.each block。但我要做的是为答案制作一个表格,我尝试了下面的代码,但不起作用:

groups/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>
...
。。。
“你确定吗?”,:method=>:delete%>
100%> 新问题 ...
Rails给出了一个错误:

未定义方法 `问题\答案\路径'

当我尝试将表单_用于([q,q.answers.build])时


有什么帮助吗?

按照您在表单中为事项指定对象的顺序,您可以将资源嵌套在组下,然后是问题,最后是答案。对于[g,q,q.answers.build],您需要使用类似于
form\u的东西。如果这不起作用,请编辑您的帖子,使其包含
rake routes
的内容,我们可以从那里开始。

Great Devin!!现在开始工作了,请回复。这个例子的正确语法是:form_for([@group,q,q.answers.build])