Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在某些\u module.rb文件中打包前\u过滤器?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在某些\u module.rb文件中打包前\u过滤器?

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.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 :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路径。明天我将回答我的问题,在那里我将键入正确的工作变量:]