2016-04-03 10 views
0

Ich versuche herauszufinden, wie ich eine Hilfsmethode verwende, die ich geschrieben habe.Rails 4 - Hilfsmethode

Es funktioniert gut im Profilmodell, aber es funktioniert nicht, wie ich es im Benutzermodell will.

Ich habe Modelle namens Benutzer und Rolle. Sie sind verbunden wie es ist und gehört vielen.

In meiner Rolle Helfer, ich habe:

Modul RolesHelper

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

In meinem Benutzerindex zeigen Seite habe ich:

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


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

Wenn ich dies versuchen, es macht:

Gastpass [#]

Wie entferne ich das Bit in []? - Ich möchte nur den Rollennamen anzeigen.

Antwort

0

ändern

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

Um

<% user.roles.each do |role| %> 
0
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 

Index Seite:

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

Auch wenn Sie in users_contro tun ller.rb, die Rollen für jeden Benutzer schneller laden würde.

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