在Rails中清理方式有条件地更改link_to位置

时间:2011-02-10 02:01:53

标签: ruby-on-rails ruby ruby-on-rails-3 link-to

我有这个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 %>

2 个答案:

答案 0 :(得分:3)

一点点清洁

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

或者你计算过admin_user的地方,大概是在控制器中,创建一个包含相应路径的附加变量,并在视图中使用它。 e.g。

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

# in view
<li><%= link_to "Home", home_path %></li>

答案 1 :(得分: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