Rails视图:加入has_many关系而不是迭代它们?

时间:2011-08-28 07:32:43

标签: ruby-on-rails arrays view relationship

Rails视图:加入对象

您好,

考虑与模型Role具有has_many关系的模型User的show视图。我想遍历属于某个用户的所有相关角色。现在它看起来像这样:

<div>associated roles:</div>
<ul>
<% @user.roles.each do |r| %>
<li><%= r.name %></li>
<% end %>
</ul>

例如在

中产生
associated roles:
* registered
* manager
* administrator

我的问题:

是否有类似Rails的方式获得如下所示的输出而不必遍历整个数组?

associated roles:
registered, manager, administrator

我尝试了加入方法......

<div>associated roles:</div>
<%= @user.roles.join(",") %>

......但这会导致......

associated roles:
#<Role:0xb6dde328>,#<Role:0xb6dde2ec>,#<Role:0xb6dde1f5>

等等......

<div>associated roles:</div>
<%= @user.roles.join(",").name %>

...导致未定义的方法`name'错误。 优雅方式的任何提示?

由于

1 个答案:

答案 0 :(得分:5)

@user.roles.collect(&:name).join(",")