Ruby on rails 基于Routes.rb和Request.path的菜单关闭时的情况

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

我有一个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 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*/
是什么意思?它是正则表达式,应该不加引号地编写。