Чистый способ в Rails условно изменить местоположение link_to - PullRequest
3 голосов
/ 10 февраля 2011

ТАК у меня есть эта ссылка_

 <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 ]

3 голосов
/ 10 февраля 2011

Немного чище

<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>
2 голосов
/ 28 января 2014

Более гибкий способ, например, если вы хотите изменить имя ссылки также:

<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

...