Ruby on Rails无法访问实例变量

时间:2014-05-02 14:21:31

标签: ruby-on-rails ruby ruby-on-rails-4

对于这个蹩脚的问题感到抱歉,但是我在轨道上遇到了ruby的新手,并且当我正在渲染“新的”时,我试图列出模型的所有对象。查看另一个模型,我收到错误

我的cliente_controller.rb有:

class ClientesController < ApplicationController
  before_action :set_cliente, only: [:show, :edit, :update, :destroy]

  # GET /clientes/new
  def new
    @cliente = Cliente.new
    @advogados = Advogado.find(:all)
  end

在我的cliente / new.html.erb我有:

  <% @advogados.each do |advogado| %>
    <%= @advogado.nome %>
  <% end %>

,抛出的错误是:

    undefined method `nome' for nil:NilClass

但是当我这样做时:

  <%= @advogados %>

打印:

[#<Advogado id: 5, nome: "Adv1", created_at: "2014-05-02 13:58:33", updated_at: "2014-05-02 13:58:33">, #<Advogado id: 6, nome: "Adv2", created_at: "2014-05-02 13:58:48", updated_at: "2014-05-02 13:58:48">] 

所以@advogados不是null,但是在循环遍历时我无法以某种方式访问​​变量。任何想法?

由于

4 个答案:

答案 0 :(得分:4)

<%= advogado.nome %>

<%= @advogado.nome %>

答案 1 :(得分:2)

您的代码正在迭代@advogados列表,并在块的持续时间内将每个代码存储在变量advogado中。

在阻止你应该使用advogado,而不是@advogado。所以请致电advogado.nome

答案 2 :(得分:1)

<%= advogado.nome %>是因为您被重新定义为每个。

答案 3 :(得分:1)

@advogado.nome应为advogado.nome,请在导轨上的红宝石中查看此instance variables

<% @advogados.each do |advogado| %>
   <%=advogado.nome%>
<% end %>