簡體   English   中英

Ruby路由和link_to,自定義:action路由問題

[英]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文件。

你應該改變collectionmember定義,當你的routes.rb map.resources :users 然后,您將獲得漂亮的/users/1/manage鏈接。

另外,在創建鏈接時,請嘗試以下操作:

<%= link_to 'Manage', manage_user_path(user) %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM