2010-06-14 41 views
2

我需要使用url助手(例如user_path(@user))在我的視圖中生成鏈接,在某些情況下,我不知道我創建此鏈接的​​模型是ie無論是用戶還是商店或其他人在rails中動態生成方法名稱

我想能夠確定這在飛行中並調用相應的視圖助手,目前我正在做以下,但我想知道是否有一個乾燥器這樣做的方式。

if object.class == "Store" 
    store_path(object) 
elsif object.class == "User" 
    user_path(object) 
...etc 
+0

向我們展示了全代碼請。你在哪寫這個代碼?幫手?模型?控制器? – 2010-06-14 22:17:41

回答

2

url_for(object)做你所需要的:

如果你不是一個哈希值傳遞記錄 (如一個活動記錄或Active 資源)作爲選項參數, 你會觸發記錄名爲 的路線。查找將在 上發生該類的名稱。所以傳遞一個對象將嘗試使用 workshop_path路由。

如果使用link_to,那麼你可以通過對象的網址:

<%= link_to 'Title', object %> 
+1

這是rails在內部做的事情,form_for和link_to只是包裝了url_for。您可以選擇是使用完整網址還是僅使用以下路徑:only_path選項。 – elektronaut 2010-06-14 22:28:06

+0

感謝這個作品完美! – badnaam 2010-06-14 23:18:19

5

當然,利用發送動態選擇方法名

send("#{object.class.name.downcase}_path", object) 
+0

這也可以! – badnaam 2010-06-14 23:18:59

+0

謝謝你。這適用於我想構建的任何路徑名:) – 2013-02-10 12:19:24