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
我正在尝试弄清楚如何使用我编写的辅助方法。
它在个人资料模型中运行良好,但在用户模型中却无法正常运行。
我有称为用户和角色的模型。他们联系在一起,属于许多人。
在我的角色助手中,我有:
模块 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