Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在手动而不是从Rails控制器生成ActionView时访问帮助程序_Ruby On Rails_Heroku_Ruby On Rails 3.2_Actionview - Fatal编程技术网

Ruby on rails 如何在手动而不是从Rails控制器生成ActionView时访问帮助程序

Ruby on rails 如何在手动而不是从Rails控制器生成ActionView时访问帮助程序,ruby-on-rails,heroku,ruby-on-rails-3.2,actionview,Ruby On Rails,Heroku,Ruby On Rails 3.2,Actionview,我有一个类(不是控制器),它生成外部javascript,然后存储在redis中,并使用Rails 3.2.19。其中一个视图调用位于应用程序\u helper中的helper,但它现在出错,表示找不到该helper 我认为调用ActionView::Base.new会从应用程序_helper.rb中引入helpers,但在默认情况下似乎不会。然而,在heroku上的制作中,这确实如预期的那样起作用。我想问题是,通过ActionView::Base.new创建的视图的路径是什么 我有: clas

我有一个类(不是控制器),它生成外部javascript,然后存储在redis中,并使用Rails 3.2.19。其中一个视图调用位于应用程序\u helper中的helper,但它现在出错,表示找不到该helper

我认为调用ActionView::Base.new会从应用程序_helper.rb中引入helpers,但在默认情况下似乎不会。然而,在heroku上的制作中,这确实如预期的那样起作用。我想问题是,通过ActionView::Base.new创建的视图的路径是什么

我有:

class MenuGenerator
  def self.js_external(id)
    @menu=Menu.find(id)
    str=ActionView::Base.new(
        Rails.configuration.paths["app/views"]).render(
        :partial => 'api/get_menu_3',
        :locals => { :menu => @menu, :format => 'div' })
    key='menus/' + id.to_s + '/js-external'
    $redis.set(key, str)
    return str
  end
并尝试通过

 def self.js_external(id)
    include ApplicationHelper
    @menu=Menu.find(id)


但两者都不起作用。我需要添加什么以使我的视图可以访问此帮助程序

你到底想用
MenuGenerator
类做什么?目的何在?这是用于查看还是用于在db中存储数据?为外部用户预构建一个外部javascript文件。这是在一次狂笑后,我意识到这其实是一个很好的问题,因为它需要一些更深入的rails见解。我现在没有时间深入研究,但我建议阅读rails代码,并尝试找出rails人员在渲染视图时实际调用了什么。我会跟踪这个问题,因为我不明白为什么它会在Heroku上工作,但在本地不起作用。@Ninigi是的,有点古怪。事实上,我只是把功能放在模型中,结束了这一天。生命太短暂了
class MenuGenerator
  include ApplicationHelper