У меня есть приложение Rails 2.3.5, и я пытаюсь отрендерить несколько Partials из модели (я знаю, я знаю - я не должен). Причина, по которой я это делаю, заключается в том, что я интегрирую сервер Comet (APE) в свое приложение Rails и мне нужно отправлять обновления на основе событий модели (например, after_create).
Я пробовал это сделать:
ActionView::Base.new(Rails::Configuration.new.view_path).render(:partial => "pages/show", :locals => {:page => self})
Это позволяет мне отображать простые частичные данные, которые не являются помощниками пользователя, однако, если я попытаюсь использовать link_to в моем частичном файле, я получаю сообщение об ошибке:
undefined method `url_for' for nil:NilClass
Я убедился, что объект, передаваемый в «путь_проекта (проект)», не равен нулю. Я также пробовал включать:
include ActionView::Helpers::UrlHelper
include ActionController::UrlWriter
В модуле, который содержит метод, выполняющий вышеуказанный вызов «рендеринга».
Кто-нибудь знает, как это обойти?
Благодарность
2 ответа
Мы используем гем render_anywhere и остались довольны им.
От README:
require 'render_anywhere'
class AnyClass
include RenderAnwhere
def build_html
html = render :template => 'normal/template/reference',
:layout => 'application'
html
end
end
Включения этих двух модулей должно быть достаточно. Может, вы забыли установить default_url_options[:host]
? Без него вы можете использовать помощников _path
, но не _url
.
Включите эти модули и проверьте, работает ли он в irb
, возможно, это приведет вас к правильному решению.
Похожие вопросы
Связанные вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.