静态页面控制器的路由问题

Routes issue with Static Pages Controller

我有两种用户类型的两个主页:home.html.erb(对于用户)和 shop_home.html.erb(对于商店)。当我在站点 header 中单击主页 link 而 "user" 已登录时,它会通过静态页面控制器中的主页方法将用户路由到 home.html.erb。不过,我在路由到 shop_user.html.erb 时遇到了问题。 shop_home 路由无效。

shop_header.erb

<% if shop_logged_in? %>
  <li id="blacklink"><%= link_to "Home", shop_home %></li>
  <li id="blacklink"><%= link_to "Drivers", users_path %></li>
  <li id="blacklink"><%= link_to "Log out", shop_logout_path, method: "delete" %></li>  
<% end %>

点击 "Home" link 给我 undefined local variable or method 'shop_home' 我需要做什么才能让主页 link 路由到 shop_home.html.erb

routes.rb

Rails.application.routes.draw do

  get 'shop_sessions/new'

  get 'shops/new'

  get 'cars/new'

  get 'sessions/new'

  get 'users/new'

  root             'static_pages#home'
  get 'shophome' => 'static_pages#shop_home', as:"shop_home"
  get 'shop', to: 'static_pages#shop_home', as: 'shop_root'
  get 'shops', to: 'shops#index', as: 'shop_index'
  get 'help'    => 'static_pages#help'
  get 'about'   => 'static_pages#about'
  get 'contact' => 'static_pages#contact'
  get 'signup'  => 'users#new'
  get 'shopsignup' => 'shops#new'
  get    'login'   => 'sessions#new'
  post   'login'   => 'sessions#create'
  get    'shoplogin'   => 'shop_sessions#new', as: 'shop_login'
  post   'shoplogin'   => 'shop_sessions#create'
  delete 'logout'  => 'sessions#destroy'
  delete 'shoplogout'  => 'shop_sessions#destroy', as: 'shop_logout'

  resources :users
  resources :shops
  resources :cars,  only: [:create, :destroy, :edit]
end

staticpagescontroller.rb

class StaticPagesController < ApplicationController

  def home
    if logged_in?
      @car = current_user.cars.build
      @feed_items = current_user.feed.paginate(page: params[:page])
    end
  end

  def shop_home
    @shop = current_shop
  end
end

您需要在有缺陷的 link_to 末尾添加 _path

因此更改此行:

  <li id="blacklink"><%= link_to "Home", shop_home %></li>

为此:

  <li id="blacklink"><%= link_to "Home", shop_home_path %></li>