0

为了 DRY,我将索引页面模板化为部分页面。被传递到部分的 :locals 的一部分如下:

: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 %>

我之前的尝试都以打印“名称”而不是 d.name 的内容而告终,这正是我想要的。

有没有办法实现这一点,或者可能是一种更好的方法来做我正在尝试的事情?

4

1 回答 1

0

您正在为键 attr_1 分配值“名称”。它永远是名字。

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

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

否则,如果您想搞砸并且确实想将 name 作为方法调用传递,因为,比如说,您在数据集中有几种不同类型的对象,您可以改为这样做

<%= d.send attr_1 %>

它将向对象发送“名称” d。

于 2012-05-27T01:40:54.780 回答