覆盖rails渲染方法并替换内容

时间:2010-03-02 21:21:06

标签: ruby-on-rails rendering-engine

我想扫描我的erb文件,寻找特定的自定义HTML标签(我已完成此部分)然后在渲染之前拦截这些标签并替换它们的html输出。我在RAILS中找不到与此类活动有关的任何信息。也许我不是在寻找合适的地方。

1 个答案:

答案 0 :(得分:2)

也许你可以这样做:

class PostsController < ApplicationController
  acts_as_special

  def show
    @post = Post.find(params[:id])
    respond_to do |format|
      format.html { my_renderer }
    end
  end
end

并写一个插件或者......:

# Module to Extend a given Controller with the acts_as_special methods

module MyRenderer
  def self.included(base)
    base.extend(ClassMethods)
  end

  module ClassMethods

    def acts_as_special
      include MyRenderer::InstanceMethods
    end
  end

  module InstanceMethods
    def my_renderer
      .. do sth with the code ....
      render :template => ...
    end
  end
end


ActionController::Base.class_eval do
  include MyRenderer
end

你不需要编写插件,你必须为控制器提供“你的”渲染方法。

如果你有不同/更好的方法,请告诉我!