RoR: Devise: после входа в систему, он перенаправляет на страницу входа, как мне установить redicect после входа в систему? - PullRequest
2 голосов
/ 24 октября 2011

Файл моих маршрутов:

     get "public/index"

  get "public/timeline"

  devise_for :users
  match '/user' => "public#index", :as => :user_root
  namespace :user do
      root :to => "public#index"
  end
  devise_scope :user do
    get "/login" => "devise/sessions#new"
    get "/logout" => "devise/sessions#destroy"
  end

  root :to => 'public#index'

Контроллер приложения

Application Controller:
class ApplicationController < ActionController::Base
  protect_from_forgery

  def after_sign_in_path_for(resource)
      stored_location_for(resource) || root_url
  end
end

Я хочу установить перенаправление на корневой URL

Я посмотрел на https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-in и это не сработало ... может быть, мои маршруты неверны?

EDIT: Проблема с регистрацией в действии. Вот вывод консоли при вводе логина / пароля:

Started POST "/users/sign_in" for 127.0.0.1 at 2011-10-25 13:31:16 -0400
  Processing by Devise::SessionsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"NeWp8HyAg5p9kBOG9ff7U/Z34IGgUorEWNk9wGFn8T0=", "user"=>{"login"=>"DerNalia", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
Completed   in 20ms
  Processing by Devise::SessionsController#new as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"NeWp8HyAg5p9kBOG9ff7U/Z34IGgUorEWNk9wGFn8T0=", "user"=>{"login"=>"DerNalia", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
Rendered devise/shared/_links.erb (2.3ms)
Rendered devise/sessions/new.html.erb within layouts/application (6.1ms)
Rendered devise/menu/_registration_items.html.erb (0.7ms)
Rendered devise/menu/_login_items.html.erb (0.5ms)
Completed 200 OK in 199ms (Views: 20.2ms | ActiveRecord: 0.8ms)

Ответы [ 3 ]

3 голосов
/ 24 октября 2011

У Devise есть переадресация перенаправления для входа в систему, которую вы можете переопределить в контроллере приложения для достижения этой цели. Сначала вам нужно установить путь к устройству nil с помощью:

def stored_location_for(resource)
  nil
end

Тогда вы можете назначить перенаправление следующим образом:

def after_sign_in_path_for(resource)
  #path_to_redirect_to
end

И это все, что нужно для изменения перенаправления после входа пользователя в систему.

Редактировать

Я более подробно изучил ваш код и обнаружил возникшую проблему при входе в систему. На новой странице сеанса у вас было поле ввода логина, указывающее :username вместо :login, поэтому измените

<%= f.text_field :username %></div>

к этому

<%= f.text_field :login %></div>

и это должно решить вашу проблему с логином. Я также заметил, что в вашем файле инициализатора Devise вы устанавливали ключи аутентификации на :login и :email. Это не лучшая практика для Devise, и рекомендуется изменить ее на строго логин.

2 голосов
/ 24 октября 2011
0 голосов
/ 27 января 2015

Я решил это с помощью

Просто измените файл config / initializers / devise.rb, чтобы иметь

config.scoped_views = true

(скопировано с https://github.com/plataformatec/devise/wiki/How-To%3a-Allow-users-to-sign-in-using-their-username-or-email-address)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...