2010-06-28 53 views
1

我試圖讓這個鏈接:紅寶石和航線的link_to,自定義:動作路線問題

<%= link_to('Edit', :action => 'manage', :id => user) %> 

甚至試圖明確<%=的link_to( '編輯',{:控制器=> '用戶', :動作=> '管理',:ID =>用戶}:方法=>:獲得)%>

顯示爲

'/users/manage/1' or '/users/1/manage' 

在HTML鏈接,但它顯示爲

'/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"} 

現在,當我把:行動的link_to,以 '編輯',即

<%= link_to('Edit', :action => 'edit', :id => user) %> 

的routes.rb edit_user GET /users/:id/edit/(.:format)作品,一個鏈接顯示的

'/users/1/edit' 

了我如何得到我的link_to顯示當它被「管理」,而不是「編輯」顯示「用戶的鏈接相同的鏈接,即s/1 /管理'而不是'/ users/manage?id = 1' ???是否因爲我的map.connect正被添加到的用戶,何時應該添加到'manage_users'

感謝您的幫助。我會試圖弄清楚。

和平。

順便說一句,/用戶/管理?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

所以我加了一個map.connect,但它被添加到用戶
我懷疑你以後其他定義,這將增加map.connect給它最低優先級。嘗試把它放在routes.rb文件的開頭。

您還可以使用命名路由,以避免混淆:

map.manage_user '/users/:id/manage', :controller => :users, :action => :manage 

,然後參考它作爲

link_to 'Manage', manage_user_path(:id => user) 

編輯
如果還是不行,請出示您的路線。 rb文件。

+0

我增加了一個圖來獲得獲得manage_user而不是用戶部分:** map.resources:用戶:成員=> {:管理= >:get} ** give ** manage_user GET /users/:id/manage(.:format){:action =>「manage」,:controller =>「users」} **但仍然是相同的'manage?id = 1'鏈接。將嘗試你的建議。 – KrNel 2010-06-28 18:03:39

+0

WOOPS。忘記了你的帖子的第二部分,link_to。有用!謝謝!!!!嗯...非常複雜的東西eheheheh – KrNel 2010-06-28 18:11:35

+0

** <%= link_to('Edit',manage_user_path(:id => user))%> ** +其他(** map.resources:users,:member => {管理=>:獲得** **或** map.manage_user'/ users /:id/manage',:controller =>:users,:action =>:manage **)= **'/ users/1/manage 「**。再次感謝Nikita。 – KrNel 2010-06-28 18:14:06

0

定義map.resources :users時,您應該在您的routes.rb中將collection更改爲member。那麼你會得到很好的/users/1/manage鏈接。

此外,在創建一個鏈接時,試試這個:

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

不,這是另一回事,無論有沒有:id需要工作(單 - 成員 - 和複數 - 收集 - )。感謝評論雖然:),yup link_to需要從資源的路徑。 map.resources:users,:collection => {:manage =>:get}和map.resources:users,:member => {:manage =>:get} – KrNel 2010-06-28 18:21:34