【问题标题】:Rails views: join on has_many relations instead of iterating through them?Rails 视图:加入 has_many 关系而不是遍历它们?
【发布时间】:2011-08-28 07:32:43
【问题描述】:

Rails 视图:加入对象

嗨,

想想与模型角色有 has_many 关系的模型用户的显示视图。我想遍历属于某个用户的所有关联角色。现在它看起来像这样:

<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

我尝试了join方法...

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

...但这会导致...

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

还有类似...

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

... 导致未定义的方法“名称”错误。 任何优雅方式的提示?

谢谢

【问题讨论】:

    标签: ruby-on-rails arrays view relationship


    【解决方案1】:
    @user.roles.collect(&:name).join(",")
    

    【讨论】:

    • 另一种解决方案是在 Role 类中覆盖 to_s
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多