3

所以我有这个link_to

 <li><%= link_to "Home", root_path %></li>

但如果它是管理员,我想去一个不同的位置,如下所示......我知道我可以做到这一点,但有没有更清洁的方法

 <% if admin_user %>
 <li><%= link_to "Home", admin_path(current_user) %></li>
 <% else %>
 <li><%= link_to "Home", root_path %></li>
 <% end %>
4

2 回答 2

3

干净一点

<li><%= link_to "Home", admin_user ? admin_path(current_user) : root_path %></li>

或者你在哪里计算过 admin_user,大概是在控制器中,创建一个包含适当路径的附加变量,然后在视图中使用它。例如

# in controller
home_path = admin_user ? admin_path(current_user) : root_path

# in view
<li><%= link_to "Home", home_path %></li>
于 2011-02-10T02:05:50.227 回答
2

一种更灵活的方式,例如,如果您还想更改链接的名称:

<li><%= 
  link_to_if admin_user, "Home", admin_path(current_user) do
    link_to "Home", root_path
  end
%></li>

http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to_if

于 2014-01-28T18:17:59.153 回答