【问题标题】:Rails devise help routing error No route matches "/sessions/user"Rails 设计帮助路由错误 No route matches "/sessions/user"
【发布时间】:2011-08-22 19:49:48
【问题描述】:

当我登录我的页面时,我会自动转到路线:http://localhost:3000/sessions/user

我得到这个错误:

Routing Error

No route matches "/sessions/user"

我在 users 文件夹中创建了一个名为 sessions_controller.rb 的控制器:

class Users::SessionsController < Devise::SessionsController

  def new
    redirect_to root_url, :notice => "You have been logged out."
  end

  def create
    user = User.authenticate(params[:login], params[:encrypted_password])
    if user
      session[:user_id] = user.id
      redirect_to root_url, :notice => "Logged in successfully."
    else
      flash.now[:alert] = "Invalid login or password."
      render :action => 'new'
    end
  end

  def destroy
    session[:user_id] = nil
    redirect_to root_url, :notice => "You have been logged out."
  end
end

我的路线文件:

Densidste::Application.routes.draw do
  match 'user/edit' => 'users#edit', :as => :edit_current_user

 devise_for :users, :controllers => { :sessions => "users/sessions" } do
    get "login", :to => "devise/sessions#new"
    get "opret", :to => 'users/users#new'
    get "logud", :to => 'users/users#destroy'
  end
  resources :sessions
  resources :users

  devise_for :users, :controllers => { :sessions => "users/sessions" }

  resources :aktivs
  resources :taggingposts
  resources :tags
  resources :kommentares
  resources :posts
end

【问题讨论】:

  • 您希望如何定义该路线?
  • 我希望我的会话控制器正常工作并重定向到根 url,并显示“成功登录”的通知

标签: ruby-on-rails ruby ruby-on-rails-3 authentication devise


【解决方案1】:

您没有定义root_url。它仍然指向静态的 public/index.html。 (由 Ryan Bigg 编辑)

devise_for :users 被声明了两次。

resources :users 是不必要的,除非您有一个 RESTful 控制器来处理设计之外的销毁和索引操作。

事实上,您是否也有用于第一个编辑操作的“用户”控制器?那应该是自定义的Users::RegistrationsController &lt; Devise::RegistrationsController

【讨论】:

    【解决方案2】:

    对于那些使用Devise 2.0Rails 3.2.1 遇到此问题并检查了@Micah Alcorn 所做的所有观察但仍然遇到问题的人-重新启动您的网络服务器。为我工作。

    【讨论】:

      【解决方案3】:

      (老问题,但我在设置 Devise 时遇到了同样的问题,所以希望这对其他人有帮助)

      从路由文件中删除resources :sessions 应该可以解决问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-26
        • 1970-01-01
        • 2011-11-14
        • 1970-01-01
        相关资源
        最近更新 更多