【问题标题】:Rails Devise after_sign_in_path_for(resource)Rails 设计 after_sign_in_path_for(resource)
【发布时间】:2016-01-05 11:15:00
【问题描述】:

我有两个设计模型,即usertechnician。我希望technicians 在他们登录时被定向到特定页面,因此我根据设计教程实现了它并将其放入应用程序控制器中

def after_sign_in_path_for(resource)
  case resource.class
  when technician
    new_services_path  
  when user
    root_path
  end
end

但我收到此错误。 [![在此处输入图像描述][1]][1] 我在这里错过了什么?

【问题讨论】:

  • @raj 感谢您的帮助,但是当我实施建议未定义方法technician_url' for #<Devise::SessionsController:0x007fd2ccabbb10> if options.empty? recipient.send(method, *args) else recipient.send(method, *args, options) end`
  • 酷,我明白你的意思,但是,你应该遵循 SO 的隔离原则。我觉得原来的问题已经回答了。你应该继续接受这个问题的答案。然后发布另一个问题。您也可以在此处发布新问题的链接,以便我们更好地帮助您和社区

标签: ruby-on-rails ruby ruby-on-rails-3 devise


【解决方案1】:

您需要更新您的switchresource.class 将返回资源的类(UserTechnician)。所以,你修改你的方法如下:

def after_sign_in_path_for(resource)
  case resource.class
  when Technician
    new_services_path  
  when User
    root_path
  end
end

【讨论】:

    【解决方案2】:

    类以大写字母书写:TechnicianUser。以下代码应该可以工作:

    def after_sign_in_path_for(resource)
      case resource.class
      when Technician
        new_services_path  
      when User
        root_path
      end
    end
    

    【讨论】:

      【解决方案3】:

      你可以试试这个。

      def after_sign_in_path_for(resource)
        case resource.class.name
        when "Technician"
          new_services_path  
        when "User"
          root_path
        end
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-27
        • 1970-01-01
        • 2012-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多