【问题标题】:Remove :html reponse to Devise Passwords Controller删除 :html 对设计密码控制器的响应
【发布时间】:2020-07-17 00:07:16
【问题描述】:

我想阻止用户访问 html 设计页面 users/passwords/new,因为我已经让我的所有设计页面都响应 :js。 这一切都适用于我的注册和会话,但我似乎无法使用密码。

我已经设置了覆盖控制器的路由: devise_for :users, controller: { passwords: 'users/passwords' }

我已重置该控制器中的导航格式:

class Users::PasswordsController < Devise::PasswordsController
      clear_respond_to
      respond_to :js

****** rest of devise code

end

我已经设置了devise.rb

config.navigational_formats = ['*/*', :html, :js](即使我在这里删除了html它仍然不起作用)

我什至从views/devise/passwords 文件夹中删除了new.html.erb。 但我仍然可以访问网址users/passwords/new

当然,如果我使用带有remote: true 的链接,它确实会呈现我的new.js.erb

此外,如果我在字段中输入邮件,它只响应 :js 会阻止 Devise 工作,我收到 ActionController::UnknownFormat 错误。

以前有人做过吗?

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    嗯,我想我找到了解决方案(?)

    我只是在我的confirmations_controller 中添加这个块

    def new
      super
      respond_to do |format|
        format.js
      end
    end
    

    如果表单是remote: true,用户仍然可以访问模态,但不能访问html版本,因为它引发了ActionController::UnknownFormat

    这会导致任何进一步的问题吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多