Rails - 如何在模型中使用字符串访问同名属性?

时间:2012-05-27 01:37:18

标签: ruby-on-rails

为了DRY,我正在将索引页面模板化为部分页面。 传入部分的本地人的一部分如下:

:locals => { :data_set => @accounts # @accounts is set in the controller as @accounts = Account.find(:all)
             :attr_1 => "name" }

我希望能够在部分内容中执行以下操作:

<% data_set.each do |d| %>
  <%= d.:attr_1 %>
<% end %>

我以前的尝试都打印了“name”,而不是d.name的内容,这就是我想要的。

有没有办法实现这一目标,或者更好的方式来做我正在尝试的事情?

1 个答案:

答案 0 :(得分:0)

您正在为密钥attr_1分配值“name”。它总是名字。

如果data_set中的对象具有名为name的属性,则根本不需要第二个变量。你只需要做

<% data_set.each do |d| %>
  <%= d.name %>
<% end <%>

否则,如果你想搞砸,并且确实想要将名称作为方法调用传递,因为比方说,你可以在数据集中使用几种不同类型的对象

<%= d.send attr_1 %>

将向对象发送“name”。