[英]Ruby routes and link_to, custom :action route problem
我正在嘗試獲取此鏈接:
<%= link_to('Edit', :action => 'manage', :id => user) %>
甚至明確嘗試<%= link_to('Edit',{:controller =>'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 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) %>
route.rb edit_user GET /users/:id/edit/(.:format)可以正常工作,並帶有顯示以下內容的鏈接
'/users/1/edit'
當它是“ manage”而不是“ 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'
所以我添加了一個map.connect,但是它被添加到了用戶中
我懷疑您在其他定義之后添加了map.connect
,這將使其具有最低優先級。 嘗試將其放在routes.rb文件的開頭。
您還可以使用命名路由來避免混淆:
map.manage_user '/users/:id/manage', :controller => :users, :action => :manage
然后將其稱為
link_to 'Manage', manage_user_path(:id => user)
編輯
如果這樣不起作用,請顯示您的route.rb文件。
你應該改變collection
到member
定義,當你的routes.rb map.resources :users
。 然后,您將獲得漂亮的/users/1/manage
鏈接。
另外,在創建鏈接時,請嘗試以下操作:
<%= link_to 'Manage', manage_user_path(user) %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.