Использование Rails 3.2. Я использую current_page?
, чтобы определить текущую страницу, чтобы добавить active
в соответствующую навигационную ссылку.Получить правильную текущую страницу? при рендеринге соответствия в маршрутах Rails
Когда Логин не удается, он возвращается в user_sessions#new
, но current_page?
не признает login_path
больше, таким образом, не добавляя класс active
по ссылке.
Я не могу использовать redirect_to
, потому что хочу поймать ошибки в контроллере.
Как я могу получить current_page?
, чтобы узнать user_sessions#new
?
Ниже мой код:
# routes.rb
# Following 2 lines ensure that the login url is maintained as "login" even there are errors after submitting the form
match 'login' => 'user_sessions#new', :as => :login, :via => :get
match 'login' => 'user_sessions#create', :as => :login, :via => :post
# user_sessions_controller.rb
class UserSessionsController < ApplicationController
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:success] = "Login successful!"
redirect_back_or_default profile_account_url
else
render 'new'
end
end
end
# _sub_nav.html.erb
<ul class="nav nav-tabs">
<li<%= " class=active" if current_page?(login_path) %>>
<a href="<%= login_path %>">Login</a>
</li>
<li<%= " class=active" if current_page?(signup_path) %>>
<a href="<%= signup_path %>">Signup</a>
</li>
</ul>