我的问题假设一个具体的答案,但可能不准确。
我创建了一条路线:
get 'users/:id/groups/' => 'users#groups', as: "my_groups"
但是当我有条不紊地访问此路径时,在视图中,我得到一个例外:
ActionController::UrlGenerationError at /
No route matches {:controller=>"users", :action=>"groups"} missing required keys: [:id]
以下是违规行的部分内容:
<% if user_signed_in? %>
<li id="groups-menu" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
Groups <b class="caret"></b>
</a>
<ul class="dropdown-menu">
#offending line:
<li><%= link_to 'My Groups', my_groups_path %></li>
<li><%= link_to 'Create a Group', new_group_path %></li>
</ul>
</li>
<li><%= link_to 'Logout', destroy_user_session_path, :method=>'delete' %></li>
<% else %>
<li><%= link_to 'Login', new_user_session_path %></li>
<% end %>
<% if user_signed_in? %>
<li><%= link_to 'Edit account', edit_user_registration_path %></li>
<% end %>
<% if user_signed_in? %>
<% if current_user.has_role? :admin %>
<li><%= link_to 'Admin', users_path %></li>
<% end %>
<% end %>
似乎没有设置current_user?
目前还不清楚如果user_signed_in?
方法有效,这会如何破解。
答案 0 :(得分:2)
您需要将:id参数传递给url helper函数
<li><%= link_to 'My Groups', my_groups_path(current_user) %></li>