我发现了一个奇怪的错误,当我尝试当我运行耙路线链接到show_members行动Rails的路线错误的故障排除
Routing Error
No route matches "/groups/1/show_members"
#routes.rb
get 'groups/:id/members' => 'groups#show_members'
#groups_controller.rb
def show_members
我得到这个:
#rake routes
groups GET /groups(.:format) {:controller=>"groups", :action=>"index"}
groups POST /groups(.:format) {:controller=>"groups", :action=>"create"}
new_group GET /groups/new(.:format) {:controller=>"groups", :action=>"new"}
edit_group GET /groups/:id/edit(.:format) {:controller=>"groups", :action=>"edit"}
group GET /groups/:id(.:format) {:controller=>"groups", :action=>"show"}
group PUT /groups/:id(.:format) {:controller=>"groups", :action=>"update"}
group DELETE /groups/:id(.:format) {:controller=>"groups", :action=>"destroy"}
group_join GET /groups/join(.:format) {:controller=>"groups", :action=>"join"}
group_remove_user PUT /groups/remove_user(.:format){:controller=>"groups", :action=>"remove_user"}
GET /groups/:id/members(.:format){:controller=>"groups", :action=>"show_members"}
UPDATE: 但我希望show_members动作要做的就是显示该组中的所有用户。我希望用户功能和路径保持不变。现在,show_members动作路由到组,与show相同。在我的组控制器中,我将默认显示组操作分为三个页面,一个显示组配置文件,一个显示show_members组中的成员,另一个显示新闻页面,当显示新闻时将显示show_news我明白了。
#groups_controller.rb
def show_members
@group = Group.find(params[:id])
@members = @group.users
@group_admin = User.find(@group.group_admin)
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @group }
end
end
#rake routes
group_join GET /groups/:group_id/join(.:format) {:controller=>"groups", :action=>"join"}
group_remove_user PUT /groups/:group_id/remove_user(.:format) {:controller=>"groups", :action=>"remove_user"}
group GET /groups/:group_id/:id/members(.:format) {:controller=>"groups", :action=>"show_members"}
group_users GET /groups/:group_id/users(.:format) {:controller=>"users", :action=>"index"}
group_user GET /groups/:group_id/users/:id(.:format) {:controller=>"users", :action=>"show"}
I WANT THIS new_user_session GET /users/sign_in(.:format) {:controller=>"devise/sessions", :action=>"new"}
INSTEAD OF THIS new_user_group_session GET /users/groups/:group_id/sign_in(.:format) {:controller=>"devise/sessions", :action=>"new"}
user_group_session POST /users/groups/:group_id/sign_in(.:format) {:controller=>"devise/sessions", :action=>"create"}
destroy_user_group_session GET /users/groups/:group_id/sign_out(.:format) {:controller=>"devise/sessions", :action=>"destroy"}
user_group_password POST /users/groups/:group_id/password(.:format) {:controller=>"devise/passwords", :action=>"create"}
new_user_group_password GET /users/groups/:group_id/password/new(.:format) {:controller=>"devise/passwords", :action=>"new"}
edit_user_group_password GET /users/groups/:group_id/password/edit(.:format) {:controller=>"devise/passwords", :action=>"edit"}
user_group_password PUT /users/groups/:group_id/password(.:format) {:controller=>"devise/passwords", :action=>"update"}
user_group_registration POST /users/groups/:group_id(.:format) {:controller=>"users/registrations", :action=>"create"}
new_user_group_registration GET /users/groups/:group_id/sign_up(.:format){:控制器=> “用户/注册”,:动作=> “新”} edit_user_group_registration GET /用户/组/ :group_id/edit(。:format){:controller =>“users/registrations”,:action =>“edit”} user_group_registration PUT /users/groups/:group_id(.:format){:controller =>“users /注册“,:动作=>”更新“} user_group_registration DELETE /users/groups/:group_id(.:format){:controller =>”users/registrations“,:action =>”destroy“} user_group_confirmation POST/users/groups /:group_id/confirmation(。:format){:controller =>“devise/confirmations”,:action =>“create”} new_user_group_confirmation GET /users/groups/:group_id/confirmation/new(.:format){:controller =>“devise/confirmations”,:action =>“new”} user_group_confirmation GET/users/groups /:group_id/confirmation (。:format){:controller =>“devise/confirmations”,:action =>“show”} groups GET /groups(.:format){:controller =>“groups”,:action =>“index” } groups POST /groups(.:format){:controller =>“groups”,:action =>“create”} new_group GET /groups/new(.:format){:controller =>“groups”,:动作=>“新”} edit_group GET /groups/:id/edit(.:format){:controller =>“groups”,:action =>“edit”} group GET/groups /:id(.:格式){:controller =>“groups”,:action =>“show”} group PUT /groups/:id(.:format){:controller =>“groups”,:action =>“u PDATE “} 组中删除/groups/:id(.:format){:控制器=>” 组”,:动作=> “消灭”}
#routes.rb
resources :groups do
get 'join' => 'groups#join'
put 'remove_user' => 'groups#remove_user'
get ':id/members' => 'groups#show_members'
resources :users, :only => [:index, :show]
devise_for :users, :controllers => { :registrations => "users/registrations" }
end
尼克的答案是正确的它修复您的问题,但你采取的做法不好,你应该有不同的模型,视图和合作为团体和用户提供消息。观看这个railscast http://railscasts.com/episodes/139。尽管您正在使用的导轨2和导轨3之间的路由语法已更改,但其他所有内容都是相同的。 – mark 2011-03-26 14:49:44