我有一個帶有功能的模塊。它位於/lib/contact.rb:如何從導軌模塊訪問URL助手
module Contact
class << self
def run(current_user)
...
end
end
end
我要訪問的URL傭工喜歡在模塊內部「users_path」。我怎麼做?
我有一個帶有功能的模塊。它位於/lib/contact.rb:如何從導軌模塊訪問URL助手
module Contact
class << self
def run(current_user)
...
end
end
end
我要訪問的URL傭工喜歡在模塊內部「users_path」。我怎麼做?
在你的模塊,只需執行:
include Rails.application.routes.url_helpers
謝謝,這樣做! – sizzle 2011-05-20 16:45:31
快樂...... ;-) – ronnieonrails 2011-05-20 16:47:27
不適合我... :(你能否提供更多的細節,請問? – 2014-02-13 17:58:44
代表團url_helpers似乎比包括整個模塊到模型更好
delegate :url_helpers, to: 'Rails.application.routes'
url_helpers.users_url => 'www.foo.com/users'
不適用於我:( – 2014-02-13 18:04:41
應該是'url_helpers'而不是'url_helper',我想。 – davmac 2014-12-03 12:47:21
嗨,你是怎麼知道這是Rails.application.routes url_helpers應該委託給你?你在哪裏找到這個文檔?謝謝! – 2015-12-09 20:33:38
這裏是我該怎麼辦它在任何情況下都沒有include
routes = Rails.application.routes.url_helpers
url = routes.some_path
這在任何情況下都有效。如果您正在嘗試include
url_helpers - 請確保您在正確的位置完成此操作,例如這個工程
module Contact
class << self
include Rails.application.routes.url_helpers
end
end
,這不起作用
module Contact
include Rails.application.routes.url_helpers
class << self
end
end
再舉一個例子與水豚測試
feature 'bla-bla' do
include Rails.application.routes.url_helpers
path = some_path #unknown local variable some_path
end
,現在是正確的
include Rails.application.routes.url_helpers
feature 'bla-bla' do
path = some_path #this is ok
end
delegate :url_helpers, to: 'Rails.application.routes'
url_helpers.users_url => 'www.foo.com/users'
到奧古斯丁Riedinger,該代表團代碼需要參照url_helpers(複數),否則你會得到
未定義的方法`url_helper」
我一直在用輔助期待的細微掙扎來自默認的控制器和堆棧(default_url_options
等),並且不想對主機進行硬編碼。
我們的網址助手是我們漂亮的模塊提供,當然:
include Rails.application.routes.url_helpers
但包括本原樣,以及(1)助手是要尋找default_url_options
,和(2)不會了解請求主機和請求。
主機部分來自控制器實例的url_options
。因此,我通過控制器上下文到我以前的模塊,現在一類:
class ApplicationController
def do_nifty_things
HasAccessToRoutes.new(self).render
end
end
class HasAccessToRoutes
include Rails.application.routes.url_helpers
delegate :default_url_options, :url_options, to: :@context
def initialize(context)
@context = context
end
def render
nifty_things_url
end
end
可能不適合所有情況,但實施一種自定義渲染的時候它一直對我很有用。
以任何方式:
可能重複的[Can Rails路由助手(即mymodel \ _path(模型))在模型中使用?](http://stackoverflow.com/questions/341143/can-rails-routing-helpers-ie -mymodel-pathmodel-in-models-in) – 2013-07-05 16:59:49