Rails 4 - 辅助方法

Rails 4 - helper method

我正在尝试弄清楚如何使用我编写的辅助方法。

它在个人资料模型中运行良好,但在用户模型中却无法正常运行。

我有称为用户和角色的模型。他们联系在一起,属于许多人。

在我的角色助手中,我有:

模块 RolesHelper

def text_for_role(name)
  case name
      when 'guest'
        'Guest Pass'
  end
end

在我的用户索引显示页面中我有:

<% @users.each do |user| %>


              <%= user.roles.each do |role| %>
                <%= text_for_role(role.name)%>
              <% end %>                   
          </td>

当我尝试这个时,它呈现:

访客通行证[#]

如何去除 [] 中的位? - 我只想显示角色名称。

改变

<%= user.roles.each do |role| %>

<% user.roles.each do |role| %>
module RolesHelper
  @roles = {
    'Guest' => 'Guest Pass',
    'Admin' => 'Admin pass',
  }

class << self
  def list
    @roles.map{|k,v| [k,v] }
  end

  def role(str)
    return @roles[str]
  end
end
end

索引页:

<%= user.roles.each do |role| %>
      <% RolesHelper.role(role)%>
<% end %> 

此外,如果您在 users_controller.rb 中执行此操作,则每个用户的角色加载速度会更快。

def index
    @users = User.includes(:role)
end