【发布时间】:2017-06-27 21:44:06
【问题描述】:
在我的控制器中,我有:
@list = ListView.new()
模板包含:
= @list.render
在lib/list_view.rb 我有:
class ListView
def render
controller_name.inspect
end
end
当我运行此代码时,我收到 undefined local variable or method 'controller_name' 错误。我还是 Rails 的新手,但我确信有办法做到这一点,就像 will_paginate 在这里做的那样:https://github.com/mislav/will_paginate/blob/master/lib/will_paginate/view_helpers/action_view.rb#L92
看来 will_paginate 可能是一个模块而不是一个类?我错过了一些东西......
【问题讨论】:
-
不同之处在于
will_paginate代码是包含在具有控制器实例变量的类中的mixin。您正在创建一个没有与您正在调用的变量名称匹配的任何现有变量的类,这就是您获得未定义变量名称的原因。将控制器传递给类的构造函数是解决此问题的一种方法。
标签: ruby-on-rails ruby