【问题标题】:Rails devise override action routes generated in views?Rails 设计覆盖视图中生成的操作路线?
【发布时间】:2015-06-09 21:08:58
【问题描述】:

在使用带有 Devise 3.3.0 的 Rails 4.1 时,我注意到以下几点:

使用routes.rb时如

  devise_scope :user do
    get '/login', :to => "devise/sessions#new"
    get '/logout', :to => "devise/sessions#destroy"
    get '/sign_up', :to => "devise/registrations#new"
  end

然后根据这些操作之一:

<%= render "devise/shared/links" %>

每个生成的链接到每个操作的默认设计路径的 href 路径, 例如 /users/sign_in 而不是 /login。

如何将这些默认路径覆盖为您指定的路径?

【问题讨论】:

    标签: ruby-on-rails ruby devise routing


    【解决方案1】:

    在您的路线中将其添加到上述代码下方。希望它现在可以工作。

    devise_for :users, controllers: {registrations: "users/registrations", sessions: "users/sessions"}
    

    【讨论】:

    • 这应该完成什么?
    【解决方案2】:

    您可以要求设计生成视图:

    rails generate devise:views
    

    这会在您的应用中创建 _links.html.erb 文件,因此您可以更新它以使用您自己的路由。

    【讨论】:

    • 这样做不会覆盖默认行为,例如失败的登录尝试重定向回 /users/sign_in 而不是我指定的“/sign_in”。我想设计完全忘记它的 /users 路径结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多