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 回答