Ruby on rails 如何在某些\u module.rb文件中打包前\u过滤器?
我有Module.rb文件和代码Ruby on rails 如何在某些\u module.rb文件中打包前\u过滤器?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有Module.rb文件和代码 module Finder module InstanceMethods def my_func @post = Post.find(params[:id]) end end def self.included(base) base.send :include, InstanceMethods base.before_filter :
module Finder
module InstanceMethods
def my_func
@post = Post.find(params[:id])
end
end
def self.included(base)
base.send :include, InstanceMethods
base.before_filter :my_func
end
end
include Finder
和控制器的代码
module Finder
module InstanceMethods
def my_func
@post = Post.find(params[:id])
end
end
def self.included(base)
base.send :include, InstanceMethods
base.before_filter :my_func
end
end
include Finder
但我的应用程序因代码而崩溃
undefined method `name' for nil:NilClass
Extracted source (around line #5):
2:
3: <p>
4: <b>Name:</b>
5: <%= @post.name %>
6: </p>
7:
8: <p>
似乎@post不起作用。怎么了?是我干的。
我的模块不工作,因为我没有添加行
config.autoload_paths += Dir["#{config.root}/lib/**/"]
进入application.rb文件。之后,我让我的任务使用以下代码:
module Finder
def self.included(base)
base.class_eval do
before_filter :my_func, :only => [:show, :edit, :update, :destroy]
end
end
def my_func
@post = Post.find(params[:id])
end
我做到了。
我的模块不工作,因为我没有添加行
config.autoload_paths += Dir["#{config.root}/lib/**/"]
进入application.rb文件。之后,我让我的任务使用以下代码:
module Finder
def self.included(base)
base.class_eval do
before_filter :my_func, :only => [:show, :edit, :update, :destroy]
end
end
def my_func
@post = Post.find(params[:id])
end
我认为过滤器是类级别的,而不是应该可以正常工作的实例。你确定你找到了合适的人吗?你检查过my_func被调用了吗?参数[:id]是你认为的吗?@muistooshort最有趣的是,我的应用程序崩溃了,即使我没有对控制器文件做任何更改,也没有添加空模块的include Finder。它会崩溃,因为没有人会设置@post。在my_func中抛出一个快速记录器调用,查看是否正在调用它,以及它是否设置了合理的@post值。@muistooshort,谢谢您的帮助。我完成了我的任务。我的模块无法工作,因为我没有在application.rb中加载lib路径。明天我将回答我的问题,在那里我将键入正确的工作变量:]我认为在过滤器是类级别之前,而不是应该可以正常工作的实例。你确定你找到了合适的人吗?你检查过my_func被调用了吗?参数[:id]是你认为的吗?@muistooshort最有趣的是,我的应用程序崩溃了,即使我没有对控制器文件做任何更改,也没有添加空模块的include Finder。它会崩溃,因为没有人会设置@post。在my_func中抛出一个快速记录器调用,查看是否正在调用它,以及它是否设置了合理的@post值。@muistooshort,谢谢您的帮助。我完成了我的任务。我的模块无法工作,因为我没有在application.rb中加载lib路径。明天我将回答我的问题,在那里我将键入正确的工作变量:]