2011-10-08 17 views
1

我正在構建一個表單,以創建一個以1個問題開頭的考試對象,並且我想爲「新問題」設置一個按鈕,以便在另一個問題字段中使用AJAX。在Rails中,當父元素不存在時,如何創建一個指向新子元素的鏈接?

只有單個問題,表單很好,當我嘗試在另一個問題字段中創建到AJAX的鏈接時,我的問題就出現了。如果我使用類似的東西:

<%= link_to "New Question", new_exam_question_path(@exam), :remote => true %> 

rails會拋出無路由匹配錯誤,因爲@exam實際上還不存在。如果我用Exam.find(10)替換@exam,它將正常工作以生成考試10的鏈接。

理想情況下,我希望能夠根據需要儘可能多地提供AJAX。 正在創建像下面我一個問題,我能夠重新使用該代碼的AJAX調用:

<%= form.fields_for :questions do |f| %> 
    <div class="edit_questions"> 
     <div class="exam_question"> 
     <%= f.hidden_field :question_type %> 
     <%= f.label "Question" %><br/> 
     <%= f.text_field :copy %> 
      <div> 
      <% if !f.object.id.blank? %> 
       <%= link_to "Delete", exam_question_path(@exam, f.object), :method=>:delete, :class => "button" %> 
      <% end %> 
      </div> 
     </div> 
    </div> 
<% end %> 
+3

你看過[這個Railscast](http://railscasts.com/episodes/196-nested-model-form-part-1)及其續集嗎? – bricker

+0

我沒有,但會檢查出來。 Thx – gfroese

+0

這兩個railscasts是無價的,我現在已經掌握了所有的工作。謝謝! – gfroese

回答

1

解決方案:鋼軌196和197爲您提供解決問題所需的所有背景。

這絕對不是最簡單的修復方法,但這些護欄與我想要做的非常相似,所以我可以非常密切地關注。按照演員指定的命名約定是很重要的,因爲在這個過程中動態構建,如果你不遵守命名約定,它將會中斷。

0

爲什麼不直接渲染視圖之前實例化控制器空考試對象?

@exam = Exam.new 
+0

這已經發生在「新」方法中,但視圖仍然失敗,可能是因爲池中沒有鏈接到的id。 – gfroese

相關問題