0

foo.rb私の/lib/ディレクトリで呼び出されたファイルでは、次のようになります。

module Foo
  def some_method
    @text_1 = "Hello!"
  end
end

このメソッドの結果をビューに表示するにはどうすればよいですか?

/config/application.rbファイルに次の行を含める必要があることを確認しました。

config.autoload_paths += %W(#{config.root}/lib

ただし、ディレクトリに保存されているファイル内のモジュールから変数を渡して、ビューに表示する方法を完全には理解していません/lib/。アドバイスをいただければ幸いです。

4

2 に答える 2

2

その値をビューに表示するには、Rubyでモジュールがどのように使用されているかを理解する必要があります。通常、モジュールは、それらを含めるか拡張することによって、他のクラスに混合されます。これにより、そのメソッドを別のクラスで使用できるようになり、ビューで参照できるようになります。あなたの場合、それを含めて、それを入れたクラスのインスタンスで利用できるようにすることができます。MyClassというActiveRecordモデルがあり、Fooを含めたとします。my_method次に、以下に示すように、そのモデルのインスタンスを呼び出すことができます。

class MyClass < ActiveRecord::Base
  include Foo
end

コントローラ内:

class MyController
  def new
    @my_class = MyClass.new
  end
end

あなたの見解では:

@my_class.some_method

そうは言っても、あなたがやろうとしていることは何でもするより良い方法があるようです:)

于 2012-11-06T23:52:18.803 に答える
0

はい、Beerlingtonに同意します。

別の方法で行うこともできます。config.autoload_paths+=%W(#{config.root} / libをアプリケーションファイルに追加する必要はありません。デフォルトでは、/libディレクトリにあるファイルは追加されないためです。railsを使用してアプリケーションを実行すると、最初に実行されます。これらのファイルをロードするには、その行をapplication.rbに含める必要があります。それ以外の場合は、次のように直接書き込むことができます。

モデルでは、

'ファイル名'が必要

クラスMyClass<ActiveRecord:: Base

 include Foo

終わり

コントローラでは、

'foobar'が必要

クラスBuyerController<ApplicationController

include Foobar

終わり

foob​​ar.rbで、

モジュールFoobar

def Foobar.foobar

   "Hello world!"

終わり

終わり

ビューで、

<%= Foobar.foobar%>(Modulenmae.Methodnameを使用してメソッドを直接呼び出すことができます)

于 2012-11-07T06:03:40.530 に答える