0

モデル内でモデルの :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 の部分。

何か案は?

4

2 に答える 2

1

を使用して String 内の Ruby オブジェクトを評価できるようにするには、二重引用符を使用する必要があります#{}

bundle_filename = "public/attachments/#{@lesson.id}.zip"

編集:どこかを定義するか、それが探しているものである場合は@lesson単に使用する必要があります。self.id

于 2012-07-17T12:19:14.360 に答える
0

@lessonはどこにも設定されていないようです。おそらく、クラスレッスンのインスタンスとして@lessonを意味しましたか?もしそうなら、@ lessonは自己であり、あなたのコードは次のようになります

bundle_filename = "public/attachments/#{self.id}.zip"  

あるいは単に

bundle_filename = "public/attachments/#{id}.zip"
于 2012-07-17T13:38:03.713 に答える