【问题标题】:Keep getting 'undefined method error' user_url不断收到“未定义的方法错误”user_url
【发布时间】:2015-01-02 21:52:42
【问题描述】:

我在一个应用程序中使用设计,但我不断收到一个未定义的方法错误,说 user_url。这是我所拥有的,请帮我解决这个问题

这是错误:

NoMethodError in Users::SessionsController#create
undefined method `user_url' for #<Users::SessionsController:0xa33291c>

Rails.root: /home/vagrant/code/AppSample

Application Trace | Framework Trace | Full Trace
actionpack (4.0.10) lib/action_dispatch/routing/polymorphic_routes.rb:129:in `polymorphic_url'
actionpack (4.0.10) lib/action_dispatch/routing/url_for.rb:159:in `url_for'
actionpack (4.0.10) lib/action_controller/metal/redirecting.rb:101:in `_compute_redirect_to_location'
...

这是用户会话控制器:

class Users::SessionsController <
Devise::SessionsController

  def after_sign_in_path_for(resource)
    @tenants_dashboard_path
  end


  def create
    user = User.find_by(:email => params[:email])
    manager = Manager.find_by(:email => (params[:email])
    if user && tenant.authenticate (params[:password])
      session[:tenant_id] = tenant.id
      redirect_to users_main_url, notice: "You are Logged in!"
    elsif
    manager && manager.authenticate(params[:password])
      session[:manager_id] = manager.id
      return managers_main_url, notice: "You are Logged in!"
    else
      flash.now.alert = "Email or password is invalid."
    end
end

错误是当我尝试将我的用户重定向到仪表板页面时。这是我的应用控制器中的登录后方法

 def after_sign_in_path_for(resource)
    if resource.is_a?(Users)
      return users_dashboard_path, notice: "You are Logged in!"
    elsif resource.is_a?(Managers)
      return managers_dashboard_path, notice: "You are Logged in!"
    end
  end

路线如下:

    devise_for :users, controllers: {registrations: "users/registrations", sessions: "users/sessions" }
    devise_for :managers, controllers: {registrations: "managers/registrations", sessions: "managers/sessions" }
    resources :reports
    resource :dashboard

  get "/managers/why_use_us" => "managers/landing#index", as: :managers_why
  get "/users/why_choose_us" => "users/landing#index", as: :tenants_why

  get "/managers/LeaseDefend_dashboard" => "managers/dashboard#index", as: :managers_main
  get "/users/LeaseDefend_dashboard" => "users/dashboard#index", as: :tenants_main

  namespace :users do
    get 'landing', to: 'landing#index'
    get 'dashboard', to: 'dashboard#index'
    resources :landing, :dashboard
  end''

我不知道要更改什么我更改了资源以匹配用户文件夹的名称,即经理和租户

【问题讨论】:

  • 从我看到的所有内容中,我都有tenants_url,但网站一直说tenant_url,我看不到任何地方可以更改它
  • 你能用完整的错误更新你的问题吗?
  • 您是否重新创建了会话控制器?检查那里的重定向。该错误在您的会话控制器中特别说明了tenant_url。
  • 我实际上创建了两个控制器,即设计会话控制器,然后创建了一个特定的租户会话控制器,无论我使用哪个(设计或特定于租户),即使设计会话控制器都给出相同的错误光秃秃的
  • 知道了!我更改了 after_sign_in_path 方法并在每个控制器中放置了一个单独的方法,因为有不同的用户

标签: ruby-on-rails session devise


【解决方案1】:

我更改了 after_sign_in_path 方法并在每个控制器中放置了一个单独的方法,因为有不同的用户

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-05-01
    相关资源
    最近更新 更多