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 に値「name」を割り当てています。必ず名前になります。

data_set のオブジェクトに name という属性がある場合、2 番目の変数はまったく必要ありません。あなたはただする必要があります

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

それ以外の場合は、たとえば、データセットにいくつかの異なる種類のオブジェクトがあるため、代わりに実行できるメソッド呼び出しとして name を渡したい場合は、

<%= d.send attr_1 %>

オブジェクトに「名前」を送信します d.

于 2012-05-27T01:40:54.780 に答える