Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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控制台:助手和应用程序在哪里定义?_Ruby On Rails_Console - Fatal编程技术网

Ruby on rails Rails控制台:助手和应用程序在哪里定义?

Ruby on rails Rails控制台:助手和应用程序在哪里定义?,ruby-on-rails,console,Ruby On Rails,Console,在rails控制台中,有两个对象可用:app和helper。涵盖这些有用的内容。不幸的是,它们在普通Rails应用程序的源代码中不可用 这些方法是在哪里定义的,或者如何在Rails应用程序中使用它们?TLDR 长版本 我将介绍我是如何发现这些信息的,以及声明是什么样子的 如何: # in rails console 1.9.3p194 :019 > a = self => main 1.9.3p194 :020 > a.method :helper => #<M

rails控制台
中,有两个对象可用:
app
helper
。涵盖这些有用的内容。不幸的是,它们在普通Rails应用程序的源代码中不可用

这些方法是在哪里定义的,或者如何在Rails应用程序中使用它们?

TLDR 长版本 我将介绍我是如何发现这些信息的,以及声明是什么样子的

如何:

# in rails console
1.9.3p194 :019 > a = self
 => main
1.9.3p194 :020 > a.method :helper
 => #<Method: Object(Rails::ConsoleMethods)#helper>
1.9.3p194 :021 > _.source_location
 => ["/Users/erichu/.rvm/gems/ruby-1.9.3-p194@global/gems/railties-3.2.8/lib/rails/console/helpers.rb", 3]
因此,
helpers
只是
ApplicationController.helpers的别名

查找
app
源代码的过程类似。以下是相关来源:

def app(create=false)
  @app_integration_instance = nil if create
  @app_integration_instance ||= new_session do |sess|
    sess.host! "www.example.com"
  end
end
因此,控制台中的
app
@app\u integration\u instance
的别名,我可以验证它是否在控制器中可用

在应用程序中使用这些是一种好的做法吗?可能不会

这是一种快速而肮脏地访问Rails视图帮助程序和渲染器的方法吗?我想是的

def helper
  @helper ||= ApplicationController.helpers
end
def app(create=false)
  @app_integration_instance = nil if create
  @app_integration_instance ||= new_session do |sess|
    sess.host! "www.example.com"
  end
end