2012-12-24 23 views
0

鑑於我在config/routes.rb我怎麼能訪問視圖助手在型號

resource :products

如果我想訪問路線傭工如product_path(self)產生示範網址定義此。我怎麼能混入這些模塊?

+2

,有你這樣做是錯誤的機會。爲什麼模型應該知道應用程序中的資源路徑?什麼是最終目標? –

+0

我有一個交易模型,我用它來與支付網關如paypal交談。由於貝寶有自己的請求url格式,我想將它封裝在模型中,而不是將它分散在控制器中。因此我可以在我的控制器中調用transaction.go_paypal。由於某些'return_url'需要由路由幫助器生成,所以我需要在我的模型中訪問它。我意識到這個問題,但我想不出有什麼辦法來實現這一點。 – steveyang

+0

在stackover流程中有2個這樣的問題,所以看看那個http://stackoverflow.com/questions/7465083/rails-3-view-helper-method-in-model http://stackoverflow.com/questions/2706433/access-a-view-helper-for-a-model-in-rails – SSP

回答

3
class MyClass < ActiveRecord::Base 
    include Rails.application.routes.url_helpers 
end 

或者如果您無法順利進入軌道中的東西(不包含)

Rails.application.routes.url_helpers.product_path(self) 
+0

正是我所需要的! – steveyang

+0

@ steven.yang,你從來沒有在我的評論中回答過這個問題,但是我想如果你不想得到幫助,我不能幫你。當然這有效,但我非常懷疑你真的需要這個。代碼味道很臭。 –

+0

steven.yang如果這正是你所需要的,爲什麼不接受答案?其次:@maček所說的完全正確。雖然這個工作是可怕的,反對MVC。你爲什麼需要這個模型?如果你需要一個可以訪問路由的函數,爲什麼不創建一個輔助方法呢? – nathanvda