そこで、ペーパークリップを追加して、users_picturesというテーブルに移行しました。私のモデルは次のようになります。
class UsersPicture < ActiveRecord::Base
attr_accessible :user_id, :users_picture_file, :users_picture_id,
:photo_file_name, :photo_content_type, :photo_file_size
belongs_to :users
has_attached_file :photo,
:url => "/images/:attachment/:basename.:extension",
:path => ":rails_root/public/images/:attachment/:basename.:extension"
end
したがって、「new.html.erb」ページにアクセスしているときに、フォームに画像を追加できます...user_idを指定して送信します。Railsはエラーを表示せず、ログには次のように表示されます。
Processing by UsersPicturesController#create as HTML
Parameters: {"commit"=>"Create Users picture",`
"authenticity_token"=>"0tbAZj5MKyN/uaj0ybaNsa0dZrxeS05OJNNA3ZNO8Uc=",
"users_picture"=>{"user_id"=>"12",
"photo"=>#<ActionDispatch::Http::UploadedFile:0xe028dbd4
@content_type="image/jpeg", @tempfile=#<File:/tmp/RackMultipart20121019-14239-1edlwpp-0>,
@headers="Content-Disposition: form-data; name=\"users_picture[photo]\"; filename=\"rh.jpeg
\"\r\nContent-Type: image/jpeg\r\n", @original_filename="rh.jpeg">}, "utf8"=>"✓"}
[paperclip] Saving attachments.
Redirected to xxxx/users_pictures/8
Completed 302 Found in 18ms (ActiveRecord: 1.2ms)
しかし、fileinfoがデータベースに保存されていないので...表示できません。Firebugは、POSTメソッドのパラメーターについて何か教えてくれます。
authenticity_token 0tbAZj5MKyN/uaj0ybaNsa0dZrxeS05OJNNA3ZNO8Uc=
users_picture[user_id] 12
users_picture[photo] ÿØÿà�JFIF������ÿÛ�� !"&# /!$'),,-180*5*+,) 0%"5)-,*4,,,*,),),,,,,,,,,,,,,))),,,*,),,,,),),,,)).,ÿÀ��Ì�Ì"�ÿÄ��������������ÿÄ�E� ����!1AQ"aq2#BRbr¡3²¢±ÁÑ4SÓ%Cs£ÒáÿÄ������������ÿÄ�%��������!1"A2BQq¡ÿÚ���?�Þ4¥()JJRR ¥pLªXl °ôR|¨u]Þýú
等々。では、パスをデータベースに保存するのではなく、画像のソースコードを保存するのでしょうか。ご覧のとおり、私はすでに:urlと:pathを設定しています(それが何であるかわからないため、:attachmentがなくても)
一般的に、私は写真を特定のパスにアップロードしたかっただけです。名前やサイズなどのファイル情報をデータベースに保存します。
ビューフォルダからの私のフォームは次のようになります。
<%= form_for(@users_picture, :html => { :multipart => true }) do |f| %>
...
<%= f.file_field :photo %>
表示は別のことなので、showとindex.html.erbは投稿しません。まず、すべてのデータをデータベースに保存し、写真を特定のフォルダーにアップロードする必要があります。それを正しく行う方法について何かアドバイスはありますか?