嘿所以我试图在模型中使用模型的:id属性,但我无法理解。
require 'zip/zip'
require 'zip/zipfilesystem'
class Lesson < ActiveRecord::Base
attr_accessible :attachment, :course_id, :goal, :title, :assets_attributes
belongs_to :course
has_many :assets, :dependent => :destroy
accepts_nested_attributes_for :assets, :reject_if => lambda { |a| a[:asset_file_name].blank? }
def bundle
bundle_filename = 'public/attachments/#{@lesson.id}.zip'
Zip::ZipFile.open(bundle_filename, Zip::ZipFile::CREATE) {
|zipfile|
self.assets.collect {
|asset|
zipfile.add( "#{asset.id}", "public/attachments")
}
}
File.chmod(0644, bundle_filename)
self.save
end
end
我在bundle_filename ='public / attachments /#{@ lesson.id} .zip'中遇到问题
特别是@ lesson.id部分。
任何想法?
答案 0 :(得分:1)
您应该使用双引号来使用#{}
来评估字符串中的ruby对象。
bundle_filename = "public/attachments/#{@lesson.id}.zip"
修改:您应该在某处定义@lesson
,或者只使用self.id
,如果这就是您要找的内容。
答案 1 :(得分:0)
@lesson似乎没有在任何地方设置。也许你的意思是@lesson作为课堂的一个实例?如果是这样,那么@lesson将是自己的,你的代码将会读取
bundle_filename = "public/attachments/#{self.id}.zip"
或只是
bundle_filename = "public/attachments/#{id}.zip"