Ruby学習15日目:ファイルアップロード
すみません、終わってないです……
【やりたいこと】
・アイテム画像をアップロードする
・画像ファイルは拡張子が「.jpgか.gifか.png」であり、かつ1M以下であること
・画像ファイルはpublicフォルダの下にあるimgフォルダに配置する
・保存時にはユーザIDと時刻を組み合わせてユニークなファイル名にする
・DBに保存するのは新しく生成したファイル名
【できたこと】
・ファイルをpublic/img以下に配置し、その時にユニークな名前にして、その名前をDBに保存すること
【できてないこと】
・画像ファイルが正しくない時にエラー表示する
Scaffoldingで生成したコードの上に乗りたいので、画像ファイルのエラーはitem.errorsに登録したい。
そしてこれは、modelから生成するものと理解。
参考書のファイルアップロードのコードがcontrollerに書いてあるので、ファイルアップロードの処理をmodelに移そうとする。
→formからpostしたfile自体を上手くmodelで扱えない
仕方ないので、modelにerror.addするメソッドを定義。
def add_errors(msg)
errors.add(:file ,msg)
end
これをcontrollerから呼び出しているんですが、こういう使い方していいのか……?
とりあえず呼び出すのは呼び出せましたが、model呼び出すのがItem.new(param)でやっているので、
エラーなのにDB登録されてしまう。
newする前にファイルアップロードしているので、アップロードするときに問題があれば
newしないとすると、何故か
format.html { render :new }
↑このコードの引数の数がおかしいと言われる。
えええ……なんでだ……?
えええ……なんでだ……?
一日ずっと格闘していたんですが、上手くいかなくて詰まってます。
また明日見てみることにします。
また明日見てみることにします。