2012-10-19 17 views
2

所以我只是添加回形針並將其移植到名爲users_pictures的表中。 我的模型看起來是這樣的:Rails:回形針不保存在數據庫中

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的沒有被保存到數據庫中...所以我不能顯示它。 螢火告訴我一些關於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 %> 

我不會發布秀和index.html.erb,因爲顯示是另一回事 - 我首先必須取得保存所有數據在數據庫中+將圖片上傳到某些文件夾。 有關如何正確執行此操作的任何建議?

+0

它看起來並不像什麼在這個階段是怎麼了。你爲什麼說文件信息沒有被保存在數據庫中? User.find(12).user_photo'(或'.user_photos',如果它是'has_many'關係)的結果是什麼?問題很可能是檢索上傳的文件,而不是保存它(如您所見,回形針說它將圖像保存在服務器日誌中)。 – gregates

+0

是的,它就像文件沒有被處理。 User.find(12).users_pictures給出例如# user1697061

+0

嗯。處理表單提交的控制器操作是什麼樣的? – gregates

回答

1

您不需要在這些子字段上設置attr_accessible。你需要標記爲attr_accessible的唯一的事情就是:photo屬性:

class UsersPicture < ActiveRecord::Base 
    attr_accessible :user_id, :users_picture_file, :users_picture_id, :photo 
+0

非常了不起,它實際上是即刻工作的。非常感謝 ! – user1697061