rails的「The asset "" is not present in the asset pipeline.」問題


#1

最近做了一個專案,遇到以下的問題

有兩個model,Product, Cart,分別的欄位如下
Product (name, image, intro_image_1, intro_image_2, …etc)

Cart(user_id, product_id, product_amounts, …etc)
在CartController使用以下程式碼將兩者join起來

@cart_product = Cart.left_outer_joins(:product).select(‘carts.*, products.name, products.description, products.image, products.price, products.remain_amount’).where(cart_type: ‘UNCONFIRMED’)

@carts = @cart_product.all

而在View (cart/index.html.erb) 中執行以下程式碼將會出現錯誤

<% @carts.each_with_index do |item, index| %>
<%= image_tag(item.image, :class => ‘img-responsive’)%>
<% end %>

錯誤訊息如圖(product-02.jpg是該產品的圖片名稱)

53

但是,如果不使用join,直接call Product中的元素,卻又可以顯示出來正常圖片
想請問是否有板上的大大或助教們可以幫忙解答!
感激不盡~


#2

因為你的 … paperclip 或是其他上傳外掛,宣告是在 Product 上而非 Cart 上 … 所以你把 Product 的欄位丟給 Cart 後, Cart obj 會不知道 image 該怎樣處理才好||||

另外一方面,這題我怎麼看都不像是需要 join … 你只需要類似 …

@carts = Cart.where(cart_type: 'UNCONFIRMED').includes(:product)
@carts.each do |cart|
    product = cart.product
    #product.image here
end

這樣也不用改包裝,且 obj 也都正確不是?

最後,你可以手寫 HTML 而非用 image_tag … 你應該就不會遇到該 error 了