Devise Invitable controller 好像达不到?
Devise Invitable controller seems not to be reached?
我安装了 devise-invitable 并使用标准的 devise-invitable 控制器(我没有生成)它正常运行。但是,当我尝试为 devise-invitable 生成自定义控制器时,我遇到了一些问题。请在下面找到我采取的步骤。
我生成控制器的步骤
- 根据设计文档,我尝试通过失败的控制台生成邀请控制器:
rails generate devise:controllers users -c=invitations
Running via Spring preloader in process 64830
Could not find "invitations_controller.rb" in any of your source paths. Your current source paths are:
/Users/name/code/name/app/lib/templates/devise/controllers
/Users/name/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/devise-4.7.0/lib/generators/templates/controllers
- 当这不起作用时,我手动尝试实现:
- 生成所有其他设备控制器的文件夹中的一个控制器
- 正在将邀请控制器添加到 routes.rb
=> 这个好像也没用,因为我试过把控制器弄坏看看有没有达到,但是没有坏。
controllers/users/invitations_controller.rb
class Users::InvitationsController < Devise::InvitationsController
def new
@hotel = Hotel.find(params[:park_id])
@user = User.new
@user.hotel = @hotel
text to cause an error message
end
end
routes.rb
Rails.application.routes.draw do
devise_for :users, controllers: {
sessions: 'users/invitations'
}
问题出在您的路由中,因为邀请不是会话。
如果您在路线中将会话更改为邀请,那么它将到达 users/invitations 控制器。
# routes.rb
Rails.application.routes.draw do
devise_for :users, controllers: {
invitations: 'users/invitations'
}
end
我安装了 devise-invitable 并使用标准的 devise-invitable 控制器(我没有生成)它正常运行。但是,当我尝试为 devise-invitable 生成自定义控制器时,我遇到了一些问题。请在下面找到我采取的步骤。
我生成控制器的步骤
- 根据设计文档,我尝试通过失败的控制台生成邀请控制器:
rails generate devise:controllers users -c=invitations
Running via Spring preloader in process 64830
Could not find "invitations_controller.rb" in any of your source paths. Your current source paths are:
/Users/name/code/name/app/lib/templates/devise/controllers
/Users/name/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/devise-4.7.0/lib/generators/templates/controllers
- 当这不起作用时,我手动尝试实现:
- 生成所有其他设备控制器的文件夹中的一个控制器
- 正在将邀请控制器添加到 routes.rb
=> 这个好像也没用,因为我试过把控制器弄坏看看有没有达到,但是没有坏。
controllers/users/invitations_controller.rb
class Users::InvitationsController < Devise::InvitationsController
def new
@hotel = Hotel.find(params[:park_id])
@user = User.new
@user.hotel = @hotel
text to cause an error message
end
end
routes.rb
Rails.application.routes.draw do
devise_for :users, controllers: {
sessions: 'users/invitations'
}
问题出在您的路由中,因为邀请不是会话。
如果您在路线中将会话更改为邀请,那么它将到达 users/invitations 控制器。
# routes.rb
Rails.application.routes.draw do
devise_for :users, controllers: {
invitations: 'users/invitations'
}
end