2012-01-29 3 views
0

Если я нахожусь на моей странице /log_in, как бы мне показать ссылку sign_up и наоборот?Не показывать ссылку на текущую страницу и не переключиться на другую ссылку

<% if /sign_up do %> 
    <%= link_to "Sign up", sign_up_path %> 
<% else %> 
    <%= link_to "Login", log_in_path %> 
<% end %> 

Допустим, маршруты отображенные:

get "/sign_up" => "devise/registrations#new" 
get "/log_in" => "devise/sessions#new" 

Поскольку я использую Завещание. Как это будет с маршрутами Devise?

спасибо.

ответ

1

Имя ваши маршруты с as:, так что вы можете использовать sign_up_path и log_in_path:

get "sign_up" => "devise/registrations#new", as: "sign_up" 
get "log_in" => "devise/sessions#new", as: "log_in" 

Я предполагаю, что вы запустите rails g devise:views так, что у вас есть

  • Войти вид app/views/devise/sessions/new.html.erb
  • Зарегистрирован вид app/views/devise/registrations/new.html.erb

Почему бы просто не просто закодировать ссылки, а не использовать оператор if?

# signup view 
<%= link_to "Log In", log_in_path %> 

# login view 
<%= link_to "Sign Up", sign_up_path %> 

Но если вы действительно хотите использовать, если заявление, вы можете использовать current_page?(named_path) проверить. Например:

<% current_page?(log_in_path) ? link_to("Sign Up", sign_up_path) : link_to("Log In", log_in_path) %>