2014-02-19 2 views
2

Я использую устройство с рельсами. Я создал модель User в разработке, и у меня не было пользовательского контроллера и домашнего контроллера. Моя корневая страница devise/sessions#new.Ошибка цепи цепи фильтра с использованием драгоценного камня

Мой путь к корню

devise_scope :user do 
    root :to => "users/sessions#new" 
end 
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks", :registrations => "users/registrations" } 

когда я бегу локальный: 3000 Я получаю следующее сообщение об ошибке.

Filter chain halted as :require_no_authentication rendered or redirected. 

Started GET "/" for 127.0.0.1 at 2014-02-19 10:07:46 +0530 
Processing by Devise::SessionsController#new as HTML 
    User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 
Redirected to http://localhost:3000/ 
Filter chain halted as :require_no_authentication rendered or redirected 
Completed 302 Found in 3ms (ActiveRecord: 0.2ms) 

Решение, которое я нашел в Интернете, что добавить это в сессиях контроллера prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ]. Мое сомнение в том, как я могу получить доступ к контроллеру сеансов. Он не генерируется в контроллере, это встроенный модуль или есть какой-либо другой способ решить эту проблему.

приложение/контроллеры/пользователи/session_controller.rb

class Users::SessionsController < Devise::SessionsController 
    prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ] 
end 
+0

посмотреть на https://github.com/plataformatec/devise#configuring-controllers –

+0

@ IshankGupta- Это я не ожидал. Когда я запускаю localhost: 3000, он не перенаправляется на мой корневой путь. Когда я хочу войти в систему через callbacks omniauth, он не вернется к правильному пути. говорит слишком много переадресаций. Веб-страница в http: // localhost: 3000/привела к слишком большому количеству перенаправлений. – Sam

ответ

4

Вы можете переопределить контроллер сеанса, как это:

route.rb

devise_scope :user do 
    root to: "users/sessions#new" 
end 

приложение/контроллер /users/sessions_controller.rb

class Users::SessionsController < Devise::SessionsController 
    prepend_before_filter :require_no_authentication, :only => [ :new, :create, :cancel ] 
end 
+0

@ vanda- Я снова получаю ту же ошибку. Я обновил то, что я сделал – Sam

+3

@Jeff Это происходит из-за того, что вы уже вошли в систему. Используйте 'skip_before_filter' вместо' prepend_before_filter' посмотреть [this] (http://stackoverflow.com/questions/9631432/rails3-devise-signup -filter-chain-halted-as-require-no-authentication-rendered) и [this] (https://github.com/plataformatec/devise/issues/974) –

+0

Я нашел настоящую ошибку. В корневом пути я не должен указывать путь. Мне нужно указать другой путь – Sam

Смежные вопросы