为什么 Rails 无法识别 project_path
Why does Rails not recognise project_path
我想知道是否有人可以提供帮助...这让我发疯。
首先,我对这一切还很陌生。如果我弄错了一些术语,我深表歉意。我已经完成了一些教程,现在正在开发我的第一个应用程序,没有任何指导性的演练……进展缓慢 :)
我有两组页面,一组我应该显示侧边栏,一组不需要它。以下是我的路线...
Rails.application.routes.draw do
#----Pages----
root 'pages#home'
get '/home', to: 'pages#home'
get '/contact', to: 'pages#contact'
#----Users----
get '/app', to: 'users#app'
get 'users/new', to: redirect('/signup')
get '/signup', to: 'users#new'
post '/signup', to: 'users#create'
#----Sessions----
get '/sessions/new', to: 'sessions#new'
get '/login', to: 'sessions#new'
post '/login', to: 'sessions#create'
delete '/logout', to: 'sessions#destroy'
#----Projects----
#----Hazards----
#----Resources----
resources :users
resources :projects
resources :hazards
end
我的 header 中有以下代码可以正常工作...
<% if current_page?(app_path) ||
current_page?(users_path) ||
current_page?(projects_path) ||
current_page?(hazards_path)
<%= render 'layouts/sidebar' %>
<% end %>
它为上面列出的路径提供侧边栏,而不是其他路径。但是...我希望将 'project_path' 等 /projects/6 中的页面添加到上面的列表中。为此,我在上面的代码中添加了以下行...
current_page?(project_path(:id)
导致...
<% if current_page?(app_path) ||
current_page?(users_path) ||
current_page?(projects_path) ||
current_page?(hazards_path) ||
current_page?(project_path(:id)) %>
<%= render 'layouts/sidebar' %>
<% end %>
添加后,应用程序加载正常,但侧边栏未添加到项目页面。所以我尝试了如下替代方法...
current_page?(project_path(@project))
此修改后,项目页面现在可以正确显示侧边栏,但是...没有侧边栏的所有其他页面无法加载并出现以下错误...
No route matches {:action=>"show", :controller=>"projects", :id=>nil} missing required keys: [:id]
我已经无计可施了...我也试过了
current_page?(project_path(params.permit))
Current_page?(project_path(project))
current_page?(project_path(project(params[:id])))
谁能把我从痛苦中解救出来...这并不夸张...纯粹的痛苦。
非常感谢。
嗯,其他页面没有 @project
。也许,你可以这样做:
current_page?(projects_path) ||
@project && current_page?(project_path(@project)) ||
...
我想知道是否有人可以提供帮助...这让我发疯。
首先,我对这一切还很陌生。如果我弄错了一些术语,我深表歉意。我已经完成了一些教程,现在正在开发我的第一个应用程序,没有任何指导性的演练……进展缓慢 :)
我有两组页面,一组我应该显示侧边栏,一组不需要它。以下是我的路线...
Rails.application.routes.draw do
#----Pages----
root 'pages#home'
get '/home', to: 'pages#home'
get '/contact', to: 'pages#contact'
#----Users----
get '/app', to: 'users#app'
get 'users/new', to: redirect('/signup')
get '/signup', to: 'users#new'
post '/signup', to: 'users#create'
#----Sessions----
get '/sessions/new', to: 'sessions#new'
get '/login', to: 'sessions#new'
post '/login', to: 'sessions#create'
delete '/logout', to: 'sessions#destroy'
#----Projects----
#----Hazards----
#----Resources----
resources :users
resources :projects
resources :hazards
end
我的 header 中有以下代码可以正常工作...
<% if current_page?(app_path) ||
current_page?(users_path) ||
current_page?(projects_path) ||
current_page?(hazards_path)
<%= render 'layouts/sidebar' %>
<% end %>
它为上面列出的路径提供侧边栏,而不是其他路径。但是...我希望将 'project_path' 等 /projects/6 中的页面添加到上面的列表中。为此,我在上面的代码中添加了以下行...
current_page?(project_path(:id)
导致...
<% if current_page?(app_path) ||
current_page?(users_path) ||
current_page?(projects_path) ||
current_page?(hazards_path) ||
current_page?(project_path(:id)) %>
<%= render 'layouts/sidebar' %>
<% end %>
添加后,应用程序加载正常,但侧边栏未添加到项目页面。所以我尝试了如下替代方法...
current_page?(project_path(@project))
此修改后,项目页面现在可以正确显示侧边栏,但是...没有侧边栏的所有其他页面无法加载并出现以下错误...
No route matches {:action=>"show", :controller=>"projects", :id=>nil} missing required keys: [:id]
我已经无计可施了...我也试过了
current_page?(project_path(params.permit))
Current_page?(project_path(project))
current_page?(project_path(project(params[:id])))
谁能把我从痛苦中解救出来...这并不夸张...纯粹的痛苦。
非常感谢。
嗯,其他页面没有 @project
。也许,你可以这样做:
current_page?(projects_path) ||
@project && current_page?(project_path(@project)) ||
...