2014-02-27 171 views
0

我需要關於此問題的一些建議。裏面我查看我打電話的一種方法是這樣的:調用控制器方法時nil:NilClass的未定義方法

<%= image_tag image_path(@photo) %> 

和路由:

match "/image", to: 'images#image', via: 'get' 

我的控制器中,我有以下方法:

def image 
    @image = Image.where("id = ?", params[:id]).first 
    send_file @image.image.url.to_s, :disposition => 'inline', :type => 'image/jpeg', :x_sendfile => true 
end 

問題是,當方法image被觸發,圖像不顯示,並在控制檯中收到以下錯誤:

NoMethodError (undefined method `image' for nil:NilClass) 

您認爲什麼可能是問題?謝謝!

回答

1

錯誤的含義: 圖像是屬於@圖像的class.Your @image是零,所以不存在所謂的nil.image。

解決方案 改變你的行動路線, 「匹配 」/圖片/:ID「,到: '像#形象',通過: '得到'」 這樣的鏈接將是[HTTP://網站名稱/ images/image/9],9是params [:id]。在您的控制器中,您應該將9替換爲您的變量(例如「#{object.id}」)。

希望有所幫助,對不起我的英文不好。

0

請檢查您的@image值,看起來Photo沒有給定ID的記錄。

1

您的路線設置不正確。它不會將一個id參數傳遞給image動作,所以你的「params [:id]」返回nil,因此你的@image變量最終爲零。

在你的路由文件試試這個:

match "image/:id", to: 'images#image', via: 'get' 

當你在這,你還不如用較短的版本是您使用Rails 4(根據你的標籤,反正):

get "image/:id", to: 'images#image' 
相關問題