如何处理访客用户的链接?

时间:2011-05-25 09:12:07

标签: ruby-on-rails ruby

在每个页面上,我们都为访客用户提供了这样的条件。

<% if not_guest? %> 
<% link_to "show", path %>
<% end %>

<% if not_guest? %> 
<% link_to "delete", path %>
<% end %>

<% if not_guest? %> 
<% link_to "edit", path %>
<% end %>

应该为访客用户显示或不显示哪个链接。

有没有更好的方法来处理这种情况,而不是为每个链接编写条件?

2 个答案:

答案 0 :(得分:5)

帮帮忙:

#helpers/application_helper.rb
def link_to_unless_guest(*args)
  if not_guest
    link_to(*args)
  end
end

然后像

一样打电话
<% link_to_unless_guest "show", path %>

答案 1 :(得分:0)

  def link_to_editable(*args)
    options = args.extract_options![:parent]
    html_tag = options.nil? ? nil : options.delete(:html_tag)
    if not_guest
      unless html_tag.nil?
        content_tag html_tag,options do
          link_to(*args)
        end
      else
        link_to(*args)
      end
    end
  end

<%= link_to_editable 'Show', path,:parent => {:html_tag => "li",:style => "border-top:1px solid #A2A2A2;",:class => "left"} %>

<%= link_to_editable 'Show', path %>

根据我的需要由@Max提供的修改过的帮助器。