我刚刚将resources: :favorites
嵌套在resources: :deals
中的内容添加到了我的Rails应用程序中。突然,deals/deal_slug/favorites/new
呈现后,访问deals/favicon.ico
发出GET请求,这当然会激活show
路由,但找不到{ {1}}。
似乎仅是引起此请求的favicon.ico
路线,并且我尝试注释掉favorites/new
和favoritescontroller#new
视图的全部,而没有任何改变。 / p>
在我的new
中注释link href="../../favicon.ico" rel="icon"
可以解决此问题,但是我很乐意将其保留在我的布局中,并弄清楚为什么这个问题刚刚开始!
我的路线文件:
layout
FavoritesController:
Rails.application.routes.draw do
# what are these??
get 'regions/index'
get 'regions/show'
root "deals#index"
resources :deals, param: :slug do
resources :favorites
end
resources :favorites
get 'my-deals', to: 'deals#my_deals', as: :my_deals_path
resources :regions, param: :slug, only: [:index, :show] do
resources :deals, only: [:index, :show], param: :slug
# resources :deals, only: [:index, :show, :edit, :destroy]
end
resource :preferences
ActiveSupport::Inflector.inflections {|inflect| inflect.irregular 'preferences', 'preferences'} # fix route helper paths so that form_for works
get '/preferences/delete_airport/:airport_id', to: 'preferences#destroy', as: 'delete_home_airport'
resources :vacations
get 'pry', to: 'application#pry'
# ------- DEVISE STUFF --------
devise_for :users, controllers: {
omniauth_callbacks: 'users/omniauth_callbacks',
preferences: 'users/preferences',
}
devise_scope :user do
get "/sign_out", to: 'devise/sessions#destroy', as: 'user_sign_out'
get "/sign_in", to: 'users/sessions#new', as: 'user_sign_in'
get "/sign_up", to: 'devise/registrations#new', as: 'user_sign_up'
get "/user/preferences", to: 'users/preferences#index', as: 'user_preferences'
get "/user/preferences/edit", to: 'users/preferences#edit', as: 'edit_user_preferences'
patch "/user/preferences/:id/edit", to: 'users/preferences#update'
end
devise_for :admins, path: 'admin', controllers: { sessions: 'admins/sessions' }
devise_scope :admin do
get "/admin", to: 'admins/sessions#portal', as: 'admin_root'
get "/admin/sign_out", to: 'devise/sessions#destroy', as: 'admin_sign_out'
end
end
答案 0 :(得分:0)
对图标图标的请求是由浏览器发出的,您的代码不会触发该请求。
问题是您的favicon href,它是相对于当前路径:“ ../../favicon.ico”,而不是绝对的“ /favicon.ico”。如果您有其他路线的级别超过2,则会遇到同样的问题。
您应该在公用文件夹上的某个位置添加favicon.icon,并使用绝对路径指向它。如果图标位于/public/favicon.ico
中,则使用href="/favicon.ico"
配置布局的图标图标,如果您将图标放在/public/icons/favicon.ico
之类的其他位置,则将链接标签更改为href="/icons/favicon.ico"
。>