2015-09-08 15 views
0

我使用了生成器腳手架的類別和問題。嵌套的路線form_for部分不適用於新的和編輯動作 - Rails 4

我的routes.rb

resources :categories do 
    resources :questions do 
     resources :choices, only: [:index] 
    end 
    end 

當我嘗試添加或編輯一個問題會出現我的問題。

這裏是我的部分表格,之前你問關係的工作好吧

<%= form_for [@question.category, @question] do |f| %> 
    <% if @question.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@question.errors.count, "error") %> prohibited this question from being saved:</h2> 

     <ul> 
     <% @question.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :question_type %><br> 
    <%= f.text_field :question_type %> 
    </div> 
    <div class="field"> 
    <%= f.label :explanation %><br> 
    <%= f.text_field :explanation %> 
    </div> 
    <div class="field"> 
    <%= f.label :description %><br> 
    <%= f.text_field :description %> 
    </div> 
    <div class="field"> 
    <%= f.label :category_id %><br> 
    <%= f.text_field :category_id %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

我必須改變它的工作?現在我得到,

undefined method `questions_path' 
+0

你能證明你的'category'和'問題'模特? –

+0

類別模型只有'has_many:questions',並且問題模型具有'belongs_to:category' –

回答

1

試試這個

UPDATE

控制器

@category = Category.find(params[:category_id]) 
@question = @category.questions.new 

_form

<%= form_for([@category, @question]) do |f| %> 

Reference

+0

又是同樣的錯誤。 –

+0

做了一個小小的修改,params應該是category_id,我應該把它標記爲正確的。這是爲我工作的感謝你! –

1

此行添加到您的category.rb模型文件:

accepts_nested_attributes_for :questions 

而且,在你的控制器:

@category = Category.find(params[:category_id]) 
@question = Question.new(category: @category) 

和形式:

<%= form_for([@category, @question]) do |f| %> 
+0

得到這個''沒有路由匹配{:action =>「show」,:category_id => nil,:controller =>「questions」,:id => nil}缺少所需的鍵:[:category_id,:id]'for某些原因category_id沒有通過。但是,當我嘗試通過控制檯'question.category'我有權訪問類別 –

+0

嘗試我更新的答案。只需將該行添加到「類別」模型中,然後嘗試不更改form_for –

+0

謝謝,您的答案與我剛纔想告訴您的我已嘗試不使用'accept_nested_attributes_for:questions'並且儘管如此仍然有效! –

1

你應該通過父母,然後爲新對象創建相同的子項。

<%= form_for [@category, @category.questions.build] do |f| %> 

編輯:

<%= form_for [@category, @category.questions.first_or_your_object] do |f| %> 

像這樣:

<% if @category.new_record? %> 
    <%= form_for [@category, @category.questions.build] do |f| %> 
<% else %> 
    <%= form_for [@category, @category.questions.first_or_your_object] do |f| 
<% else %> 

同時添加在您的分類模型:

accepts_nested_attributes_for :questions 
+0

我認爲你有相反的方式,我在創建問題而不是類別時遇到問題。 –

+0

在你的問題中沒有提到。但最後你的答案很棒。 –

+0

是啊,我沒有因爲部分說明自己:)謝謝你的努力,雖然,讚賞! –