我在 application_helper.rb 中定义了一个方法:
def bayarea_cities
[
['San Francisco', 'San Francisco'],
['Berkeley', 'Berkeley'],
...
]
end
我也在使用 Grape 创建 API。它在 Rails 应用程序之外的自己的模块中:
module FFREST
class API_V2 < Grape::API
...
我很确定 Grape 是一个 Rack 应用程序,因此它无法正常访问 Rails 模块。当我尝试在其中一种 API 方法中调用“bayarea_cities”方法时,我收到未定义的变量或方法错误。我尝试将 ApplicationHelper 模块包含在“include ApplicationHelper”中,但这不起作用。
如何在 API 类中访问它?
更新:
感谢Deefour的更新。我添加extend self
到我的 Helpers 模块中,并将这些方法引用为实例/混合方法(而不是模块方法),但我仍然遇到同样的错误。在我的 lib/helpers.rb 文件中,我有:
module Helpers
extend self
def bayarea_cities
[
'San Francisco',
'Berkeley',
'Danville',
'Oakland',
'Daly City',
'Sunnyvale'
]
end
def us_states
['CA']
end
end
在我的 API 文件中,我有:
module FFREST
class API_V1 < Grape::API
include Helpers
version 'v1', :using => :header, :vendor => 'feedingforward'
...
当然,我有 config/initializers/helpers.rb 文件说require "helpers"
但是,当我调用美国各州 API 方法时,例如,通过转到http://localhost:5000/api/states
,我得到:
undefined local variable or method `us_states' for #<Grape::Endpoint:0x007fd9d1ccf008>
有任何想法吗?