我有一個嵌套的資源,比如這一個Rails應用程序:rails:有沒有一種方法可以使用`link_to`自動生成嵌套資源?
resources :product do
resources :sales
end
凡Sale belongs_to Product
,沒有一個產品一個Sale
實例不能存在。
我可以使用link_to
+ @product
直接鏈接到一個產品:
<%= link_to @product.name, @product %>
產生
<a href="/products/3">Strawberry Jam</a>
如果我想要做一個銷售類似的東西,但是,我不能使用一個@sale
。我必須涉及該產品。這是行不通的:
<%= link_to @sale.date, @sale %>
我必須用這樣的:因爲sale_path
沒有定義
<%= link_to @sale.date, [@sale.product, @sale] %>
第一種情況是不行的(僅product_sale_path
是)。
我的問題是:我可以在銷售模式中添加什麼東西,以便link_to
(或url_for
)在生成url時自動添加「父級」(本例中爲產品)?
我試過看the implementation of url_for
,我認爲我可以通過monkypatching HelperMethodBuilder.url.handle_model_call
來做到這一點,但我寧願不這樣做,如果有另一種方式。
我打算把這個作爲答案,但它不是我最終使用的(我給了我所有的模型一個'Linkable'模塊有一個「路徑」方法,它返回'self',並在需要時覆蓋該方法。但我仍然必須執行'link_to @ sales.path'而不是'@ sales')。 – kikito