【发布时间】:2010-06-28 17:49:24
【问题描述】:
我正在尝试获取此链接:
<%= link_to('Edit', :action => 'manage', :id => user) %>
甚至明确尝试过 'users', :action => 'manage', :id => user}, :method => :get) %>
以 HTML 格式显示链接
'/users/manage/1' or '/users/1/manage'
但它显示为
'/users/manage?id=1'
我可以在我的路线中看到:
manage_users GET /users/manage(.:format) {:action=>"manage", :controller=>"users"}
...
edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
所以我添加了一个map.connect,但它被添加到users
users GET /users/manage/:id(.:format) {:action=>"manage", :controller=>"users"}
但没有任何成功。链接仍然是'/users/manage?id=1'
这不再适用于上述情况。
GET /users/:id/manage(.:format) {:action=>"manage", :controller=>"users"}
现在,当我将 :action 放在 link_to 中时,“编辑”即
<%= link_to('Edit', :action => 'edit', :id => user) %>
routes.rb edit_user GET /users/:id/edit/(.:format) 有效,链接显示为
'/users/1/edit'
如何让我的 link_to 在“管理”而不是“编辑”时显示相同的链接,即显示 'users/1/manage' 链接而不是 '/users/manage?id=1'???是不是因为我上面的map.connect正在被添加到users,什么时候应该添加到'manage_users'?
感谢您的帮助。我会努力弄明白的。
和平。
顺便说一句,/users/manage?id=1 有效,我只想点击正确的重写链接。
编辑 routes.rb
map.resources :users, :collection => {:manage => :get}
#map.manage_user '/users/:id/manage', :controller => :users, :action => :manage
#map.resources :users, :member => { :manage => :get }
#map.connect 'users/manage/:id(.:format)', :controller => 'users', :action => 'manage', :conditions => { :method => :get }
map.resources :categories
map.resources :posts
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
【问题讨论】:
标签: ruby-on-rails ruby