Ruby on rails Helper方法不通过“reload!”重新加载在rails控制台中

Ruby on rails Helper方法不通过“reload!”重新加载在rails控制台中,ruby-on-rails,helper,rails-console,Ruby On Rails,Helper,Rails Console,我有这样一个助手方法: module PostsHelper def foo "foo" end end 在rails控制台中,我检查函数,然后将文本foo更改为bar,然后重新加载!控制台,但helpers.foo仍不返回bar 也许像这篇文章一样已经在控制台中创建了Helper对象,我对此不确定。 我只想知道如何在rails控制台中使用helper方法。你能告诉我怎么做吗?假设你有一个助手模块,如下所示: module CarsHelper def put_a_ca

我有这样一个助手方法:

module PostsHelper
  def foo
    "foo"
  end
end
在rails控制台中,我检查函数,然后将文本foo更改为bar,然后重新加载!控制台,但helpers.foo仍不返回bar

也许像这篇文章一样已经在控制台中创建了Helper对象,我对此不确定。


我只想知道如何在rails控制台中使用helper方法。你能告诉我怎么做吗?

假设你有一个助手模块,如下所示:

module CarsHelper

  def put_a_car_in(location)
    if location == "your car"
      puts "So you can drive while you drive!"
    end
  end

end
启动Rails控制台,要创建帮助程序,您只需在模块中执行以下操作:

>> include CarsHelper # It is not necessary to include module
=> Object

>> helper.put_a_car_in("your car") # simply write helper.your_method_name
So you can drive while you drive!

重新加载!不起作用了,我也试过了。您必须从rails控制台退出,然后再次启动rails c以检查更改。我希望它对您有所帮助。

假设您有一个如下所示的帮助器模块:

module CarsHelper

  def put_a_car_in(location)
    if location == "your car"
      puts "So you can drive while you drive!"
    end
  end

end
启动Rails控制台,要创建帮助程序,您只需在模块中执行以下操作:

>> include CarsHelper # It is not necessary to include module
=> Object

>> helper.put_a_car_in("your car") # simply write helper.your_method_name
So you can drive while you drive!
重新加载!不起作用了,我也试过了。您必须从rails控制台退出,然后再次启动rails c以检查更改。我希望这对您有所帮助。

您认为helper表示的对象已实例化,因此不受重新加载调用的影响,这是正确的!。控制台中的helper方法定义为:

def helper
  @helper ||= ApplicationController.helpers
end
第一次调用helper时,它将记忆ApplicationController帮助程序。当您调用重新加载时!,ApplicationController类及其帮助程序已重新加载,但帮助程序方法仍在查看旧实例

您可以直接调用ApplicationController.helpers,而不是使用helper方法,运行reload!后您将看到所做的更改:

编辑

从Rails5开始,这将不再是一个问题。A从助手控制台方法中删除备忘录。

助手表示已实例化的对象,因此不受重新加载调用的影响,这是正确的!。控制台中的helper方法定义为:

def helper
  @helper ||= ApplicationController.helpers
end
第一次调用helper时,它将记忆ApplicationController帮助程序。当您调用重新加载时!,ApplicationController类及其帮助程序已重新加载,但帮助程序方法仍在查看旧实例

您可以直接调用ApplicationController.helpers,而不是使用helper方法,运行reload!后您将看到所做的更改:

编辑

从Rails5开始,这将不再是一个问题。A从助手控制台方法中删除备忘录