在rails3中渲染部分时出错

时间:2014-02-06 17:36:17

标签: ruby-on-rails

我正在尝试使用普通的

渲染部分轨道
<%=render 'subtasks/descform %> command

现在问题是这个descform partial是从另一个部分调用的,它是'子任务/子任务'并且它们有很多子任务。

因此,子任务部分也将从任务部分渲染,如此

<% task.subtasks.each do |subtask| %>
<%=render :partial=>subtask %>
<%end%>

所以问题在于desc形式,它有一个像这样的形式

<%=form_for subtask,:remote=>:true,:method => :put do |f| %>
          <%= f.text_area :description,rows:'5',cols:'12',:class=>'myarea'%>
          <%= f.submit "save",class:'btn btn-success col-md-4' %>
         <a data-id='<%=subtask.id %>' href="#" class="myclose"><i class="fa fa-times fa-lg" style="margin:10px auto;"></i></a>
<% end %>

因此,当我尝试渲染此表单时,我收到错误

#&lt;#:0x458f6b8&gt;

的未定义局部变量或方法“子任务”

有人可以解释这个错误的原因以及如何解决这个问题。

3 个答案:

答案 0 :(得分:1)

subtask对象作为局部变量传递给descform partial。首先是subask,然后是descform

<% task.subtasks.each do |subtask| %>
   <%=render :partial => 'subtask', :locals => {:subtask => subtask} %>
<%end%>

subtask内部,将其传递给descform

 <%=render :partial => 'subtasks/descform', :locals => {:subtask => subtask} %>

当你传入当地人时,你必须提到partial。例如,以下内容不起作用

<%=render 'subtasks/descform', :locals => {:subtask => subtask} %>

答案 1 :(得分:1)

您只需要将变量传递给partial,如下所示:

<%=render 'subtasks/descform', :subtask => subtask %>

然后,您可以在部分subtask

中访问它

答案 2 :(得分:0)

在任务部分:

<%= render :partial => "subtask", :collection => task.subtasks %>

在子任务部分中:

<%=render :partial => 'subtasks/descform', :locals => {:subtask => subtask} %>