Rails ActionController为每个操作执行相同的代码

时间:2010-02-10 02:39:47

标签: ruby-on-rails actioncontroller

对于那里的rails专家,我想知道你在哪里/如何为你的Web应用程序中的每个动作执行相同的代码?如果你能指出我的文章或提供一个简短的代码片段,我将非常感激。

提前感谢任何可以提供帮助的人。

3 个答案:

答案 0 :(得分:31)

在ApplicationController中使用过滤器为应用程序中的每个操作运行代码。所有控制器都来自ApplicationController,因此将过滤器放在那里将确保过滤器运行。

class ApplicationController
  before_filter :verify_security_token
  def verify_security_token; puts "Run"; end;
end

答案 1 :(得分:15)

听起来像你在谈论filters

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上。

答案 2 :(得分:2)

  • before_filter如果您希望代码在每个操作“之前”执行。

  • 如果您希望每次使用时都声明操作,可以将其放入ApplicationController并在任何控制器中调用该方法。

另一种方法是使用帮手,如:

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

在你的控制器中:

class MyController < ActionController::Base
  include PersonHelper

  def index
     eat
  end
end