【问题标题】:Devise routing error: "Unknown action -- The action 'create' could not be found for UsersController"设计路由错误:“未知操作——找不到用户控制器的操作‘创建’”
【发布时间】:2012-07-10 13:45:55
【问题描述】:

我的设计设置以前运行良好,但现在,出于某种原因,每当我尝试注册新用户时,它都会尝试调用 users#create 而不是 registrations#create。我认为这一定是我的 routes.rb 文件有问题。我最近在我的应用程序中添加了一个新资源“首选项”,因此路由可能很不稳定:

Indexer2::Application.routes.draw do
  resources :preferences

  get "home/index"

  resources :posts
  resources :users

  devise_for :users, :controllers => {:registrations => 'registrations', :invitations => 'invitations'}, :except => [:show] do
    get "/signup" => "devise/registrations#new", :as => 'user_signup'
    get '/logout' => 'devise/sessions#destroy', :as => 'user_logout'
    get '/login' => "devise/sessions#new", :as => 'user_login'
  end 

  match '/welcome' => 'pages#welcome'

  resources :preferences, :except => [:destory, :edit, :create, :new, :index, :show]  do 
    collection do
      post "make_feed_preference"
      post "change_preference"
    end
  end

  root :to => "home#index"

end

【问题讨论】:

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


    【解决方案1】:

    你的UsersController 应该有create 方法。 如果您不想编写自己的注册逻辑,只需从 Devise::RegistrationsController < DeviseController 继承即可:

     controller UsersController < Devise::RegistrationsController
          #....
     end
    

    这将包括默认的设计方法。

    【讨论】:

    • 这似乎不起作用,无论如何,我的问题似乎是应用程序想要调用 users#create,但我希望它调用registrations#create。
    • 哦,看看rake routes的打印内容,有登录路径吗? (到 Registrations#new 和 Registrations#create)
    • 并检查如果您在 routes.rb 中评论 resources :users 会发生什么,这可能与 devise_for :users 冲突
    • 哇!谢谢!评论资源:用户做到了!
    • 其实这样效果更好:resources :users, :except => [:create]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2016-06-06
    • 1970-01-01
    相关资源
    最近更新 更多