【问题标题】:no responce when using devise in other controller在其他控制器中使用设备时没有响应
【发布时间】:2021-08-28 11:49:49
【问题描述】:

我在 Rails 开发方面的时间不长,现在正在处理结帐登录逻辑。我最终找到了这种解决方案,以便将用户作为资源在其他控制器中使用设计

  def resource_name
    :user
  end
 
  def resource
    @resource ||= User.new
  end

  def resource_class
    User
  end
 
  def devise_mapping
    @devise_mapping ||= Devise.mappings[:user]
  end

虽然我现在可以在控制器中使用资源,但当我尝试登录/注册时,Devise 无法正常工作。我在尝试登录时收到错误的电子邮件/密码错误,但在尝试注册时没有得到响应。即使我将电子邮件字段留空,我也不会收到由于 resource.errors 而出现的错误。

我的代码是:

= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f|
  = render 'devise/shared/error_messages', resource: resource
    = f.label :email, 'Enter Email'
    = f.email_field :email, placeholder: 'Enter Email'
    = resource.errors.messages[:email].to_sentence
    = f.submit ''

也许其他人有同样的问题或在这种情况下看到任何解决方案,我将不胜感激。

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    如果您尝试创建用户,然后将其传递给其他功能,如果他们成功登录,您可以按照Devise documentation 使用current_user

    但我不确定你到底想做什么。用户应该是 @user 或 :user,具体取决于您的设置。你到底想达到什么目的?其他控制器是什么样的?

    【讨论】:

    • 我使用这个建议来创建来宾用户github.com/heartcombo/devise/wiki/How-To:-Create-a-guest-user,我想这会破坏注册。我已经解决了登录问题,但注册对我来说仍然是个问题。尽管如此,当我在设计生成的视图中注册时,一切正常,但是当我尝试在结帐控制器方法中执行此操作时,会收到 current_user = nil 并跳过注册
    猜你喜欢
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多