2012-05-01 60 views
1

我有2款(圖書&圖片)回形針 - 測試,如果圖像已被上傳

class Book < ActiveRecord::Base 

    has_many :images 

    accepts_nested_attributes_for :images 

end 




class Image < ActiveRecord::Base 

    belongs_to :book 

    has_attached_file :data, :path => ":rails_root/public/system/datas/:book_id/:style/:basename.:extension", 
         :url => "/system/datas/:book_id/:style/:basename.:extension", 


    :styles => { 
     :thumb => ["150x172#",:jpg], 
     :large => ["100%", :jpg] 
    } 

    validates_attachment_presence :data 
    validates_attachment_content_type :data, 
    :content_type => ['image/jpeg', 'image/pjpeg', 
        'image/jpg', 'image/png', 'image/tiff', 'image/gif'], :message => "has to be in a proper format" 



end 

我想,這樣當用戶創建一個新的圖書和上傳圖像修改我的應用程序,它們是重定向到一個特定的頁面,否則他們將被定向到「顯示」頁面

我已經修改了書控制器我的「創造」的動作如下:

def create 
    @book = Book.new(params[:book]) 


    if @book.save 

     flash[:notice] = 'Book was successfully created' 

     if params[:book][:image][:data].blank? # === this line is giving me errors 
     redirect_to @specific_page 
     else 
     redirect_to show_book_path(@book.id) 
     end 

    else 
     render :action => 'new' 
    end 

    end 

我想測試一下,如果一個圖像或多個圖像已被上傳,用戶應針對不同的頁面

如果條件是錯誤的下面:

if params[:book][:image][:data].blank? # === this line is giving me errors 

我將不勝感激,如果有人可以建議我如何檢查圖像是否已附加到新書中。

請注意,我只想檢查新上傳的圖像,而不是與本書相關的所有圖像。

感謝

回答

1

首先,我不確定您的視圖文件。但是,如果用戶沒有選擇/上傳單個圖像,則params [:book] [:image]將爲零,因此'if params [:book] [:image] [:data] .blank?'行給出錯誤。

嘗試檢查與圖書實例

if @book.images.any? 
    redirect_to @specific_page 
+1

感謝您的建議相關聯的「圖像」的情況下,我想檢查只有新上傳的圖片,不與書相關的所有圖像。 「@ book.images.any? '正在檢查與書相關的所有圖像 – Kim

1

你可以使用Ruby的FileTest模塊。有一個exists?方法,如果給定文件存在則返回true,否則返回false。

查看API文檔here