2014-06-25 25 views
0

Iam新增了導軌,我的表單中有一個圖像字段。但我沒有把它當作強制性領域。但是,當我嘗試繞過它並提交表單時,它顯示一個錯誤。我在下面發佈我的錯誤。如何將照片字段設置爲非必填

當我添加如果PARAMS [:聯繫人] & & PARAMS [:聯繫人] [:照片] IAM越來越錯誤,那是因爲它試圖訪問的散列裏面是空的,以避免我已經添加PARAMS [:接觸] [:相片] .original_filename = 「empty.jpg」,但它也將引發錯誤

NoMethodError在ContactsController#爲零創建 未定義的方法`original_filename」:NilClass

private 
def func 
    name=params[:contact][:photo].original_filename 
    directory= "public/data" 
    return path = File.join(directory,name)            end           

類型錯誤在ContactsController#創建 無隱式轉換o f無字符串

def contact_params 
    File.open(func,"wb") { |f| f.write(params[:contact][:photo].read) } 
    params.require(:contact).permit(:firstname, :lastname, :gender, :email_id, :mobile_number, :address) 
end 

感謝您的耐心等待。

+0

檢查你的參數,看看傳遞給控制器​​什麼是 – Rafal

回答

0

檢查params[:contact][:photo]是否在嘗試訪問它之前實際傳遞給了您的控制器。

private 
def func 
    if params[:contact] && params[:contact][:photo] 
    name=params[:contact][:photo].original_filename 
    directory= "public/data" 
    return path = File.join(directory,name) 
    else 
    return nil # or whatever you'd like to return if no filename is passed 
    end 
end 

我建議更多的信息,檢查出Action Controller Rails Guide(和一般的Rails Guides)。

+0

感謝您的回覆,我已經嘗試使用if循環,正如您所提到的,但它會引發錯誤。發佈下面我的錯誤,我想用一個空白接觸式圖像櫃面不提供圖像,我已經嘗試過,但在ContactsController#它不工作類型錯誤創建 的零的隱式轉換成字符串 \t 高清contact_params \t \t File.open(func,「wb」){| f | f.write(params [:contact] [:photo] .read)} \t \t params.require(:contact).permit(:firstname,:lastname,:gender,:email_id,:mobile_number,:address) \t end end – Jazmin

+0

這是一個完全不同的問題,因爲它看起來像是錯誤在你的'create'方法中。您能否將您的'create'和'contact_params'方法添加到您的問題中? [:接觸] [:相片] –

+0

,以下 DEF創建 \t \t接觸= Contact.new(contact_params) \t \t名=參數蔭張貼.original_filename \t \t如果contact.save \t \t \t接觸。更新(:照片=>名稱) \t \t \t redirect_to的@contact \t \t其他 \t \t \t呈現 '新' \t \t年底 \t年底 高清contact_params \t \t File.open(FUNC,「WB 「){| f | f.write(params [:contact] [:photo] .read)} \t \t params.require(:contact).permit(:firstname,:lastname,:gender,:email_id,:mobile_number,:address) \t結束 – Jazmin