2011-06-02 181 views
3

我真的試着用以下的博客和評論從紅寶石指南的例子(嵌套路線一的form_for http://guides.rubyonrails.org/getting_started.html#adding-a-route-換註釋)。Rails 3條中的form_for嵌套路線

我真的做一個應用程序有很多這類問題的創建調查,問題是一組中,並且每個問題都有答案的一個O更多的選擇。

這是reoutes.rb

resources :groups do 
    resources :questions do 
     resource :answers 
    end 
    end 

的控制器都運行良好,當我表現出組創建那裏可以看到THES問題,並創建一個嵌套的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 /> 

現在我需要顯示的答案和一些方法來插入ANW那個問題。使用q.answers.each在@ group.questions.each塊中顯示答案的效果很好。但是,我所要做的就是做出回答一個的form_for,我試過代碼波紋管,但does`nt工作:

組/ 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的給出了一個錯誤:

undefined method `question_answers_path'

當我嘗試使用form_for([q,q.answers.build])。

任何幫助?

回答

1

您在表格的事宜指定對象的順序,你必須下組,那麼問題則最終答案嵌套的資源。你需要使用類似form_for [g,q,q.answers.build]的東西。如果該dosnt工作編輯您的帖子,以包括rake routes的內容,我們可以從那裏去。

+0

偉大的德文!現在它的工作,爲答覆。這個示例的正確語法是:** form_for([@ group,q,q.answers.build])** – Alex 2011-06-03 13:53:44

+0

沒問題,很高興聽到您已經完成所有工作。 – 2011-06-03 20:26:17