Rails:如何从new.html.erb访问@elements

时间:2012-11-29 06:14:16

标签: ruby-on-rails ruby

并感谢帮助!!

我正在构建我的fisrt Rails应用程序,并遇到此问题:

我为一个名为“Expediente”的类创建了一个Scaffold,来自index.html.erb我可以通过@expedientes获取访问权限,但是我无法通过new.html.erb进行访问。

这是代码:

// index.html.erb,运行得很好: 。 。

    <% @expedientes.each do |expediente| %>

    <tr>
    <td class="custom"> <%= expediente.id %> </td>

    <td class="custom"> <%= expediente.tipo_expediente %> </td>

    <td class="custom">

<% expediente.pacientes.each do |paciente| %>

    <%= paciente.nombre_completo %><br/>
<% end %>

。 。

// new.html.erb,这根本不起作用,并为nil发送未定义的方法`each':NilClass错误消息:

。 。

      <% @expedientes.each do |expediente| %>

      <%if expediente.individual?%>

      <% expediente.pacientes.each do |paciente| %>

     <option value=126><%= paciente.nombre_completo %></option>

     <%end%>

     <%end%>  

     <%end%>

。 。

再次感谢你的帮助!

3 个答案:

答案 0 :(得分:2)

因为ExpedientesController中的索引操作(呈现index.html.erb视图)定义变量@expedientes,但您的新操作(呈现new.html.erb视图)不会。

答案 1 :(得分:0)

您在控制器中的New操作会构建Expedientes类的单个实例,因此,它不是您可以使用each进行迭代的集合。

答案 2 :(得分:0)

结合以上2个答案 在索引方法中,您可能会有类似

的内容
@expedientes = Expediente.all 

在New方法中你会有

@expedient = Expediente.new

在新方法中添加

@expedientes = Expediente.all  

最终

def new 
    @expedient = Expediente.new
   @expedientes = Expediente.all  
end