【问题标题】:Altering devise routes in rails改变轨道中的设计路线
【发布时间】:2019-12-17 16:24:10
【问题描述】:

我一直在研究 Railscasts 视频,并尝试调整它们以适应最新的 rails 的版本,即第 6 版。我正在观看以下剧集:

http://railscasts.com/episodes/124-beta-invitations

视频解释说,您需要在更改之前进行某种形式的授权/身份验证, 所以我按照以下网站上的说明进行操作:

https://www.nopio.com/blog/authentication-authorization-rails/

我在第 20 步停了下来,因为不需要最后一步。这里的设计是大多数人使用的主要宝石 繁重的工作。

现在就 railscast 而言,我正处于我们需要更改注册路径的地方,这是我卡住的地方,并且给出的更改路由文件的示例如下:

map.signup '/signup/:invitation_token', :controller => 'users', :action => 'new'

在与我走同一条路并使用设计之后的一段时间内也有评论 显示如下:

devise_for :users, :controllers => {:registrations => 'registrations'} do
  get 'users/sign_up/:invitation_token' => 'devise/registrations#new', :as => "new_user_registration"
end

输入上述并运行rails路线后,我找不到条目的任何更改,即。添加 :invitation_token 和 sign_up 路径仍然如下所示:

new_user_registration GET /users/sign_up(.:format) registrations#new

我的理解应该是这样的:

new_user_registration GET /users/sign_up/:invitation_token(.:format) registrations#new

如果有人能指出正确的方向,将不胜感激:)

如果需要任何其他信息来帮助解决问题,请告诉我?

【问题讨论】:

    标签: devise ruby-on-rails-6


    【解决方案1】:

    据我所知,devise 不允许您使用 devise_for 修改默认注册路径(请参阅方法文档:https://www.rubydoc.info/github/plataformatec/devise/master/ActionDispatch/Routing/Mapper%3adevise_for

    您可以改为使用devise_scope

    devise_scope :user do
      post 'users/sign_up/:invitation_token', to: 'registrations#new', as: 'new_user_registration'
    end
    

    请注意,由于您使用的是自己的注册控制器,因此您需要指出使用该控制器的新路径,而不是设计路径。

    【讨论】:

    • 我查看了 devise_scope 很多次,但很难找到相关性。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 2017-03-28
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多