Rake 任务访问模型
我正在尝试从 rake 任务中访问名为 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 任务访问 Rails 模型,但对于 Rails 3.1 来说可能略有偏差
*编辑 Book.all 当我放置时会返回一些内容Book.all.to_yaml 所以 to_sym 错误可能是 av.render 中的其他错误
我已经弄清楚问题是什么。从我的角度来看,我指的是实例变量。
谁能告诉我如何通过设置该变量来继续使用实例变量?
这是我将实例变量更改为 :params 变量时的工作版本
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能应该使用实例变量。
在你的渲染中
,我认为你想要
you should probably use instance variables.
and in your render
also, i think you want