这是一个例子:
<%= atributo = "name" %>
<% @clients.each do |cli| %>
<%= cli.atributo %>
<% end %>
错误未定义方法'atributo'
答案 0 :(得分:4)
这不是Ruby的工作方式。例如:
attribute = "name"
client = Client.first
client.attribute # => Calls "attribute" method on client
您想要的是动态调用方法:
attribute = "name"
client = Client.first
client.send(attribute) # => Calls "name" method on client.
更好的是只读取您想要操作的属性:
attribute = "name"
client = Client.first
client[attribute] # => Value of "name" attribute
答案 1 :(得分:1)
你想要的可能是:
<% atributo = "name" %>
<% @clients.each do |cli| %>
<%= clo[atributo] %>
<% end %>
因此,您可以动态调用#name
上的方法cli
。
答案 2 :(得分:0)
您正在调用atributo
对象上的方法cli
。如果该对象没有该方法,那么您将收到错误。
你在这里做的是将一个局部变量设置为字符串&#34; name&#34;然后迭代一些集合并在对象上调用一些方法。我不认为你打算做什么。我需要更多信息指出你正确的方向。
答案 3 :(得分:0)
当您定义atributo
时,它会变成一个独立变量,与任何模型无关。
当您呼叫cli.atributo
时,您正在尝试查找与atributo
对象关联的cli
方法,该方法不存在。如果您需要从对象访问atributo
,请在模型中定义它。
答案 4 :(得分:0)
<%= atributo = "name" %>
实际上是试图将其打印出来,唯一可以打印出来的方法是如果有方法atributo
尝试
<% atributo = "name" %>
或者更好的是,在控制器中设置attributo的值(如在@attributo中)。该视图应仅用于查看,而不是实际设置变量。
答案 5 :(得分:0)
我认为这可能是你想要的:
<% @clients.each do |cli| %>
<%= cli.name %>
<% end %>