静态页面控制器的路由问题
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>
我有两种用户类型的两个主页: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>