2

コードを含む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

しかし、私のアプリはコードでクラッシュします

    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 が機能していないようです。どうしたの?

4

1 に答える 1

0

やったよ。行を追加しなかったため、モジュールが機能しませんでした

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
于 2012-09-10T11:18:30.453 に答える