Я использовал пропустить перед действием, чтобы приложение разрешало использовать четыре страницы (client_details, client_process, login, validate_login). Но действие не работает, как я ожидал. Это не позволяет пользователю войти в систему. Я не знаю, почему. Пожалуйста, помогите.Пропустить, прежде чем действие не будет пропущено в Rails 4
Мой контроллер Пользователи,
class UsersController < ApplicationController
skip_before_action :check_session, :only=>[:client_details,:client_process,:login,:validate_login]
require 'securerandom'
def client_details
@client=Client.new
end
def client_process
params.permit!
@client=Client.new(client_params)
if @client.save
Notify.scop(@client).deliver
flash[:notice] = " your infomation is registered,wait for approval"
redirect_to :action=> "login"
else
render "client_details"
flash[:notice] = "sorry..."
end
end
def login
@user=User.new
render :layout=>false
end
def validate_login
params.permit!
@user=User.where params[:user]
[email protected](:id)[0]
if not @user.blank?
@chk=User.where(:username=>params[:user][:username]).pluck(:role)[0]
@chk1=User.where(:username=>params[:user][:username]).pluck(:block_status)[0]
if @chk=="Admin"
if @chk1==nil
session[:user_id][email protected]
redirect_to :action=>"admin_page"
else
flash[:notice] = "sorry!... Administrator blocked you..."
redirect_to root_path
end
elsif @chk=="user"
redirect_to root_path
elsif @chk==nil
redirect_to :action=>"client_page"
end
else
flash[:notice] = "Enter valid username and password"
redirect_to root_path
end
end
end
Мой контроллер приложений,
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :check_session
def check_session
if session[:user_id].blank?
redirect_to root_path
end
end
end
Является ли 'check_session' определенно называемым, или это может быть побочным эффектом чего-то еще? Попробуйте использовать 'raise' или' puts' в начале 'check_session', если вы не уверены. – tombeynon
вызывается check_session. Посмотрите на журнал моего сервера. Начато GET «/ users/client_page» для 192.168.1.102 в 2016-06-10 16:48:46 +0530 Невозможно отобразить консоль с 192.168.1.102! Разрешенные сети: 127.0.0.1, :: 1, 127.0.0.0/127.255.255.255 Обработка пользователямиController # client_page как HTML Перенаправлено на http://192.168.1.59:3000/ ** Цепочка фильтра остановлена как: check_session rendered или перенаправлено ** Завершено 302 Найдено в 2ms – kelvin
Ahah, ваш skip_before_action не включает #client_page – tombeynon