Ruby on rails 基于Routes.rb和Request.path的菜单关闭时的情况
我有一个case-when子句,根据您所在的URL,它将引入不同的菜单选项。但是,根据您可能在的一些菜单,它无法识别您已分配了一些变量。系统错误:Ruby on rails 基于Routes.rb和Request.path的菜单关闭时的情况,ruby-on-rails,ruby,ruby-on-rails-3,conditional,Ruby On Rails,Ruby,Ruby On Rails 3,Conditional,我有一个case-when子句,根据您所在的URL,它将引入不同的菜单选项。但是,根据您可能在的一些菜单,它无法识别您已分配了一些变量。系统错误: ActionController::RoutingError in Pages#users_page Showing /home/initiald/RubymineProjects/SOWOnline/app/views/layouts/_navigation.html.erb where line #27 raised: No route ma
ActionController::RoutingError in Pages#users_page
Showing /home/initiald/RubymineProjects/SOWOnline/app/views/layouts/_navigation.html.erb where line #27 raised:
No route matches {:controller=>"results", :action=>"show"}
这是我目前掌握的代码
<% case request.path %>
<% #ROOT AND SETTINGS %>
<% when '/', settings_path, '/guest' %>
<% #SURVEY AND RESULTS %>
<% when '/sow_survey', '/surveys', '/results', result_path, results_path, available_surveys_path, take_survey_path, view_my_survey_path, edit_my_survey_path %>
<% if permitted_to? [:admin, :partner, :employee], :users %>
<%= link_to 'new survey', available_surveys_path %>
<%= link_to 'edit survey', results_path %>
<% end %>
<% #USERS %>
<% when '/register' , '/users', '/sow_users', edit_user_path %>
<% if permitted_to? [:admin, :partner, :employee], :users %>
<%= link_to 'new user', register_path %>
<%= link_to 'list users', list_users_path %>
<% end %>
<% else %>
<% end %>
没有任何不带属性的
结果路径
,但有结果路径(结果id)
路径,即:
{:controller=>"results", :action=>"show", :id => your_paticular_id}
看起来
/results/:id
UPD
只需在此处使用正则表达式:
<% when '/sow_survey', '/surveys', '/results', /\/results\/\d*/, results_path, available_surveys_path, take_survey_path, view_my_survey_path, edit_my_survey_path %>
是的-您的代码很混乱。问题在于它在使用结果路径的页面上工作,但在类似“编辑用户路径”(user)的页面上会出错,因为在本例中,用户未定义。是否改为使用If Elsif语句更好,还是您认为我会遇到未定义变量的相同问题?在那里使用正则表达式
感谢fl00r的帮助'/\/results\/\d*/'
消除了错误,并将菜单项放在需要的地方。出于我自己的学习目的,结果之前的\/
和\/\d*/
是什么意思?它是正则表达式,应该不加引号地编写。