不要显示当前页面的链接而是改为不同的链接

时间:2012-01-29 03:06:50

标签: ruby-on-rails ruby ruby-on-rails-3 devise

如果我在/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。如何使用Devise路线?

谢谢。

1 个答案:

答案 0 :(得分:1)

使用as:为您的路线命名,以便您可以使用sign_up_pathlog_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 %>

但如果您确实想使用if语句,可以使用current_page?(named_path)进行检查。例如:

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