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从助手控制台方法中删除备忘录