Я пытаюсь получить доступ к модели с именем Book
из грабли, например, так:
task :create_epubs => :environment do
include Rails.application.routes.url_helpers # brings ActionDispatch::Routing::UrlFor
include ActionView::Helpers::TagHelper
av = ActionView::Base.new(Rails.root.join('app', 'views'))
books = Book.all
av.render("books/", :books => books)
end
но я получаю следующее предупреждение
rake aborted!
undefined method `to_sym' for nil:NilClass
Tasks: TOP => create_epubs
(See full trace by running task with --trace)
Я пытаюсь загрузить окружение, как показано ниже: доступ к моделям рельсов из задачи rake , но, возможно, он немного отключен для рельсов 3.1
* edit Book.all возвращает что-то, когда я помещаю Book.all.to_yaml, так что ошибка to_sym, вероятно, что-то еще в av.render
Я понял, в чем проблема. Я имел в виду переменную экземпляра с моей точки зрения.
Может кто-нибудь сказать мне, как продолжать использовать переменные экземпляра, устанавливая эту переменную?
Это рабочая версия, когда я изменяю переменные экземпляра на: params variable
task :create_epubs => [:environment] do
av = ActionView::Base.new(Rails.root.join('app', 'views'), :assigns => self)
av.view_paths = ActionController::Base.view_paths
av.extend ApplicationHelper #or any other helpers your template may need
book = Book.first
puts av.render(:template => "books/epub-show", :locals => {:book => book}, :layout => false) # this isn't passing @book to the view correctly, i get undefined method for nil:nilClass
end