17

Rails の専門家の皆さん、Web アプリケーションのすべてのアクションに対して同じコードをどこでどのように実行するのか疑問に思っていました。記事を教えていただけるか、短いコード スニペットを提供していただければ幸いです。

助けていただける方、よろしくお願いします。

4

3 に答える 3

31

ApplicationController でフィルターを使用して、アプリケーション内のすべてのアクションのコードを実行します。すべてのコントローラーは ApplicationController から派生しているため、そこにフィルターを配置すると、フィルターが確実に実行されます。

class ApplicationController
  before_filter :verify_security_token
  def verify_security_token; puts "Run"; end;
end
于 2010-02-10T09:41:42.167 に答える
15

あなたがフィルターについて話しているように私には聞こえます。

class MyController < ActionController::Base
  before_filter :execute_this_for_every_action

  def index
    @foo = @bar
  end

  def new
    @foo = @bar.to_s
  end

  def execute_this_for_every_action
    @bar = :baz
  end
end

すべてのコントローラーでフィルターを実行する場合は、フィルターをApplicationControllerに配置することもできます。

于 2010-02-10T02:47:04.883 に答える
2
  • before_filter各アクションの「前」にコードを実行する場合。

  • アクションを使用するたびにアクションを宣言したい場合は、アクションを入れてApplicationController、任意のコントローラーでメソッドを呼び出すことができます。

別のアプローチは、次のようなヘルパーを使用することです。

module PersonHelper
   def eat
     {.. some code ..}
   end
end

そしてあなたのコントローラーで:

class MyController < ActionController::Base
  include PersonHelper

  def index
     eat
  end
end
于 2010-02-10T06:17:53.127 に答える