eir*_*kir 6 xml ruby-on-rails view-helpers ruby-on-rails-3.2 rabl
我正在使用Rabl在rake任务中生成XML输出:
xml = Rabl.render @listings, 'feeds/listings', :format => :xml
# do stuff with xml
Run Code Online (Sandbox Code Playgroud)
但是,我需要在引用的rabl视图文件中使用多个辅助方法,并且NoMethodError
我会从这个问题的答案中得到一个正如我所期望的那样.
我尝试使用extends
,并include
在使用的rake任务,但该类我仍然得到的helper方法同样的错误:
require "#{Rails.root}/app/helpers/feeds_helper.rb"
class SerializeData
extends FeedsHelper
def perform
xml = Rabl.render @listings, 'feeds/listings', :format => :xml
# do stuff with xml
end
end
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法在这种方式生成的rabl视图文件中使用辅助方法?(或者至少在某种程度上我仍然可以将它们作为rake任务中的字符串渲染?)帮助器方法被用于许多次,以便按照固定的要求正确地格式化各种数据,因此很难完全删除它们.
我最终得到了一个猴子补丁解决方案.
我注意到NoMethodFound
错误来自Rabl::Engine
类的实例,所以我在该类中包含了所需的路由和辅助方法,然后才能访问它们:
require "#{Rails.root}/app/helpers/feeds_helper.rb"
...
class Rabl::Engine
include Rails.application.routes.url_helpers
include FeedsHelper
end
Run Code Online (Sandbox Code Playgroud)
另请注意,url
除了path
帮助程序(例如root_url
和root_path
)之外,还需要设置URL主机:
Rails.application.routes.default_url_options[:host] = "www.example.com"
Run Code Online (Sandbox Code Playgroud)
我肯定更喜欢非猴子补丁解决方案,或者至少根据所提供的动作的控制器,根据需要包含助手.我等着接受这个,看看是否有人能想出这样的答案.
归档时间: |
|
查看次数: |
2420 次 |
最近记录: |