Ruby on rails 设计用户编辑注册路径不工作

Ruby on rails 设计用户编辑注册路径不工作,ruby-on-rails,ruby-on-rails-4,devise,authorization,Ruby On Rails,Ruby On Rails 4,Devise,Authorization,我有一个rails 4应用程序,它有一个用户模型和两种类型的用户:贷款人和企业。在登录时,贷款人会被引导到他们的仪表板,仪表板会显示他们的业务信息。他们可以从仪表板转到“帐户”页面,在那里他们可以编辑自己的信息(密码、电子邮件等) 当用户选择“帐户”时,将显示一条设备消息,其中说明: You need to sign in or sign up before continuing. 此时,用户已经过身份验证,仪表板通过@user.name和视图中需要对用户进行身份验证的其他调用访问用户的属性

我有一个rails 4应用程序,它有一个用户模型和两种类型的用户:贷款人和企业。在登录时,贷款人会被引导到他们的仪表板,仪表板会显示他们的业务信息。他们可以从仪表板转到“帐户”页面,在那里他们可以编辑自己的信息(密码、电子邮件等)

当用户选择“帐户”时,将显示一条设备消息,其中说明:

You need to sign in or sign up before continuing.
此时,用户已经过身份验证,仪表板通过@user.name和视图中需要对用户进行身份验证的其他调用访问用户的属性

我需要弄清楚为什么编辑路径不接受当前经过身份验证的用户

routes.rb

devise_for :users, skip: :registrations
devise_for :lenders, skip: :sessions, :controllers => {:registrations => "lenders/registrations"}
devise_for :businesses, skip: :sessions, :controllers => {:registrations => "businesses/registrations"}
<li class="list-group-item">
  <%= link_to edit_lender_registration_path do %>
    <i class="fa fa-user"></i> Account
  <% end %>
</li>
class Lenders::RegistrationsController < Devise::RegistrationsController
  before_filter :update_sanitized_params

  def new
    super
    flash[:success] = 'An email has been sent to your inbox with a link to activate you account.'
  end

  def create
    super
  end

  def update
    super
  end

  private

  def update_sanitized_params
    devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:email, :password, :password_confirmation, :type, :confirmed_at)}
  end
end 
\u sidebar.html.erb

devise_for :users, skip: :registrations
devise_for :lenders, skip: :sessions, :controllers => {:registrations => "lenders/registrations"}
devise_for :businesses, skip: :sessions, :controllers => {:registrations => "businesses/registrations"}
<li class="list-group-item">
  <%= link_to edit_lender_registration_path do %>
    <i class="fa fa-user"></i> Account
  <% end %>
</li>
class Lenders::RegistrationsController < Devise::RegistrationsController
  before_filter :update_sanitized_params

  def new
    super
    flash[:success] = 'An email has been sent to your inbox with a link to activate you account.'
  end

  def create
    super
  end

  def update
    super
  end

  private

  def update_sanitized_params
    devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:email, :password, :password_confirmation, :type, :confirmed_at)}
  end
end 
  • 账户
  • 注册\u controller.rb

    devise_for :users, skip: :registrations
    devise_for :lenders, skip: :sessions, :controllers => {:registrations => "lenders/registrations"}
    devise_for :businesses, skip: :sessions, :controllers => {:registrations => "businesses/registrations"}
    
    <li class="list-group-item">
      <%= link_to edit_lender_registration_path do %>
        <i class="fa fa-user"></i> Account
      <% end %>
    </li>
    
    class Lenders::RegistrationsController < Devise::RegistrationsController
      before_filter :update_sanitized_params
    
      def new
        super
        flash[:success] = 'An email has been sent to your inbox with a link to activate you account.'
      end
    
      def create
        super
      end
    
      def update
        super
      end
    
      private
    
      def update_sanitized_params
        devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:email, :password, :password_confirmation, :type, :confirmed_at)}
      end
    end 
    
    类别贷方::注册控制器<设计::注册控制器
    过滤前:更新已消毒的参数
    def新
    超级的
    flash[:success]=“已向您的收件箱发送了一封电子邮件,其中包含激活您帐户的链接。”
    终止
    def创建
    超级的
    终止
    def更新
    超级的
    终止
    私有的
    def更新\u消毒\u参数
    为(:注册){许可证(:电子邮件,:密码,:密码,:确认,:键入,:确认,}设计参数
    终止
    终止
    
    用户、贷款人和企业是不同的模式吗?@mus贷款人和企业是不同的模式,但它们继承自用户。我猜
    设计:贷款人
    自动要求
    贷款人
    登录。您正在使用
    design\u:users
    创建会话。尝试删除
    skip::sessions
    ,然后使用借贷者路径登录,看看是否有效。