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