Переопределить метод рендеринга рельсов и заменить содержимое - PullRequest
2 голосов
/ 03 марта 2010

Я хочу отсканировать мои erb-файлы в поисках определенных пользовательских тегов HTML (я сделал эту часть), а затем перед рендерингом перехватить эти теги и заменить их вывод html. Я не могу найти какую-либо информацию, касающуюся этого вида деятельности в RAILS. Возможно я не ищу в правильном месте.

1 Ответ

2 голосов
/ 25 августа 2010

может быть, вы могли бы сделать что-то вроде:

class PostsController < ApplicationController
  acts_as_special

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

и напишите плагин или sth:

# 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

ну, вам не нужно писать плагин, вам просто нужно сделать «свой» метод визуализации доступным для контроллера.

если у вас есть другой / лучший метод, пожалуйста, дайте мне знать!

...