我想有一個Rails 3 web應用程序的不同部位的部分。站點部分應使用相同的控制器和相同的視圖顯示相同的資源。動態URL生成用於網站的欄目
所以http://foo.org/premium/products/1
應呈現與http://foo.org/products/1
相同的產品(也許根據該部分進行一些修改)。
用於處理我想到莫名其妙地重寫URL(也許在routes.rb中,在機架級或服務器級),讓http://foo.org/premium/products/1
變得http://foo.org/products/1?section=premium
。有沒有更好的解決方案?
但真正的問題,我看到的是產生這些網站的應保留部分的鏈接時。例如。產品編號爲http://foo.org/premium/products/1
的鏈接應爲http://foo.org/premium/products/2
而不是http://foo.org/products/2?section=premium
。
可惜事實並非如此微不足道的link_to和* _path不知道的部分。我也希望使這種高度動態的,以便我可以輕鬆地添加和刪除部分,而不接觸靜態路線。
我想到了他們被link_to
產生後重寫的URL。這會是一個好方法嗎?還有其他建議嗎?
好吧,看來我的問題是沒有被改寫(我更新它)。命名空間方法使用一個新的控制器和其他視圖。我想要的是重用相同的控制器和視圖,只是一個別名URL來訪問它(和一個選項,以獲取控制器內的別名)但我想'link_to'保持當前別名URL。 – Zardoz 2011-04-05 14:27:27
我仍然認爲該命名空間是做到這一點的最好辦法。您是否擔心讓事情幹?如果是這樣的話,你可以在你的視圖使用的諧音,創造一個可以包含的模塊在每個控制器中。這樣你就可以爲佈局甚至控制器中可能發生的任何必要更改做好準備。否則,每次出現保費和非保費之間的差異時,您都會進行黑客入侵。 – 2011-04-05 14:42:20
是的,這是我在這裏看到的一個乾燥問題。我必須爲每個網站部分使用視圖變體,因爲我也有不同的路徑(例如'premium_products_path','producsts_path')。如果我想重新使用partials或完整的視圖,那麼我將再次檢查我當前的哪個部分,然後用正確的路徑調用'link_to'。或者我錯過了什麼? – Zardoz 2011-04-05 15:18:32