在Rails中,当父元素不存在时,如何创建指向新子元素的链接?

时间:2011-10-08 22:52:29

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 link-to

我正在构建一个表单来创建一个以1个问题开头的考试对象,我希望在另一个问题字段中有一个“新问题”按钮。

这个表单只有单个问题很好用,当我尝试在另一个问题字段中创建指向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 %>

2 个答案:

答案 0 :(得分:1)

解决:导演演员196和197为您提供解决问题所需的所有背景。

这绝对不是最简单的修复,但这些轨道演员与我正在尝试的非常类似,所以我可以非常密切地关注。遵循演员表中显示的命名约定非常重要,因为在此过程中会动态构建,如果您不遵循命名约定,它将会中断。

答案 1 :(得分:0)

为什么不在呈现视图之前在控制器中实例化空检查对象?

@exam = Exam.new