Link_to_if - 文本仍然存在

时间:2015-06-11 15:19:49

标签: ruby-on-rails hyperlink

我想做一个条件link_to,只有当用户以管理员身份登录时才显示。所以我这样做了:

应用程序控制器

def confirm_admin
 if session[:role] == "admin"
   @isAdmin = true
 else
   flash[:notice] = "Vous n'avez pas les droits pour accéder à cette page."
   redirect_to root_path
   return false
 end
end

查看

<%= link_to_if is_admin, 'Editer l\'idée', edit_idee_path(@idee), :class => "editer custom-button" %>

链接消失但文字仍然存在,你知道为什么吗?

2 个答案:

答案 0 :(得分:1)

link_to_if只会使文字为无链接文字;它从文本中删除链接,而不是文本本身。

您要做的是,您可以通过以下代码实现:

<% if is_admin %>
  <%= link_to 'Editer l\'idée', edit_idee_path(@idee), :class => "editer custom-button" %>
<% end %>
<%# Now, it will remove both: link as well as text. %>

答案 1 :(得分:0)

更好的方法是在link_to_if语句的末尾添加一个空块,这将在条件为真时显示文本,而在条件为假时不显示。

E.g。

flash[:notice]= "Some text that will always show. 
#{view_context.link_to_if(user.exists?,
'A hyperlink that will show based on conditional', 
user_path)**{}**}"