iro*_*and 1 ruby-on-rails helper rails-console
我有一个这样的辅助方法:
module PostsHelper
def foo
"foo"
end
end
Run Code Online (Sandbox Code Playgroud)
在 rails 控制台中,我检查了函数,然后将文本更改"foo"为"bar",然后reload!是控制台,但helpers.foo仍然没有返回"bar"。
也许 Helper 对象已经像这篇文章一样在控制台中创建了,我不确定。 Rails 控制台:重新加载!不反映模型文件的变化?可能的原因是什么?
只有我想知道如何在 rails 控制台中使用 helper 方法。你能告诉我怎么做吗?
你是正确的,helper代表一个已经实例化的对象,因此不受调用的影响reload!。helper控制台中的方法定义为:
def helper
@helper ||= ApplicationController.helpers
end
Run Code Online (Sandbox Code Playgroud)
第一次调用时helper,它会记住ApplicationController助手。当您调用 时reload!,ApplicationController类(及其助手)会重新加载,但该helper方法仍在查看旧实例。
不使用helper方法,ApplicationController.helpers直接调用即可,运行后你会看到你的变化reload!:
> helper.foo
# => "foo"
> ApplicationController.helpers.foo
# => "foo"
> # Change the return value of PostsHelper from "foo" to "bar"
> reload!
> helper.foo
# => "foo"
> ApplicationController.helpers.foo
# => "bar"
Run Code Online (Sandbox Code Playgroud)
编辑
从 Rails 5 开始,这将不再是问题。合并了一个PR以从helper控制台方法中删除记忆。
| 归档时间: |
|
| 查看次数: |
571 次 |
| 最近记录: |