В моем приложении Rails 3 я использую Ajax для получения форматированного HTML:
$.get("/my/load_page?page=5", function(data) {
alert(data);
});
class MyController < ApplicationController
def load_page
render :js => get_page(params[:page].to_i)
end
end
get_page
использует метод content_tag
и должен быть доступен также в app/views/my/index.html.erb
.
Так как get_page
использует много других методов, я инкапсулировал все функциональные возможности в:
# lib/page_renderer.rb
module PageRenderer
...
def get_page
...
end
...
end
и включил его так:
# config/environment.rb
require 'page_renderer'
# app/controllers/my_controller.rb
class MyController < ApplicationController
include PageRenderer
helper_method :get_page
end
Но, поскольку метод content_tag
недоступен в app/controllers/my_controller.rb
, я получил следующую ошибку:
undefined method `content_tag' for #<LoungeController:0x21486f0>
Итак, я попытался добавить:
module PageRenderer
include ActionView::Helpers::TagHelper
...
end
но потом я получил:
undefined method `output_buffer=' for #<LoungeController:0x21bded0>
Что я делаю неправильно?
Как бы вы решили это?