我正在尝试获取此链接:
<%= link_to('Edit', :action => 'manage', :id => user) %>
甚至明确尝试&lt;%= link_to('Edit',{:controller =&gt;'users',:action =&gt;'manage',:id =&gt; user},:method =&gt;:get )%&gt;
将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 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'的链接,而不是 '/用户/管理?编号= 1' ???是因为上面的 map.connect 被添加到用户,应该添加到'manage_users'吗?
感谢您的帮助。我会试着搞清楚。
和平。
BTW, / 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'
答案 0 :(得分:1)
所以我添加了一个map.connect,但它已被添加到用户中
我怀疑你在其他定义之后添加了map.connect
,这会给它最低优先级。尝试将它放在routes.rb文件的开头。
您还可以使用命名路由来避免混淆:
map.manage_user '/users/:id/manage', :controller => :users, :action => :manage
然后将其称为
link_to 'Manage', manage_user_path(:id => user)
修改强>
如果这不起作用,请显示您的routes.rb文件。
答案 1 :(得分:0)
在定义collection
时,您应该在routes.rb中将member
更改为map.resources :users
。然后你会得到很好的/users/1/manage
链接。
此外,在创建链接时请尝试以下操作:
<%= link_to 'Manage', manage_user_path(user) %>