如果我在/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路线?
谢谢。
答案 0 :(得分: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 %>
但如果您确实想使用if语句,可以使用current_page?(named_path)
进行检查。例如:
<% current_page?(log_in_path) ? link_to("Sign Up", sign_up_path) : link_to("Log In", log_in_path) %>