3

私はおそらくいくつかのことを見逃しています。たとえば、 app/helpers/foo_controller.rb にヘルパー関数があり、コードは次のようになります。

def sample_helper(count)
    #implementaton...
end

Railsによって生成されたWebページでこのヘルパーを使用したいのですが、コードは次のとおりです。

    <%= sample_helper(user.id) %>

Web ページを実行しようとすると、メソッドが定義されていないというエラーが表示されます。前もって感謝します!

4

2 に答える 2

4

命名規則が正しくありません。

ヘルパー ファイルapp/helpers/foo_helper.rbに名前を付けると、次のようになります。

module FooHelper
  def sample_helper(count)
    "#{count} items" # or whatever
  end
end

そして今、レンダリングされたどのビューからでもメソッドFooControllerを使用できるはずです。sample_helper


また、Rails ジェネレーターを使用する場合は、この構造が自動的にセットアップされることを知っておく必要があります。必要なのは、生成されるファイルにメソッドを追加することだけです。そうすれば、命名規則を推測する必要はありません。

たとえば、このコマンドは、コントローラー ファイル、コントローラー テスト ファイル、ヘルパー ファイル、およびインデックス ビュー ファイルをすべてカスタマイズできる状態にします。

rails g controller foo index
于 2013-05-27T21:18:14.547 に答える
0

あなたのヘルパーは app/helpers/ foo_helper.rbと呼ばれるファイルにあるべきですか? このファイルにはヘルパーと同じ名前のモジュールが含まれています (ラクダ化されています) のように:

module FooHelper 
  def sample_helper(cont)
    # implementation
  end
end

これが、Rail がヘルパーを自動ロードする方法です。

于 2013-05-27T21:18:07.030 に答える