2016-04-04 29 views
1

içinde sindirmek oluşturmayan:Rails4: image_url Bu kodu vardır kontrolörü

class ExampleController < ApplicationController 
    include ActionView::Helpers::AssetUrlHelper 

    def show 
    respond_to do |format| 
     msg = { status: "ok", message: "Success!", image_url: image_url('image.png') } 
     format.json { render :json => msg } 
    end 
    end 
end 

Bu bana bu yanıtı döndürebilir:

{ status: "ok", message: "Success!", image_url: 'images/image.png' }

Ve beklediğim gibi bir şey:

{ status: "ok", message: "Success!", image_url: 'assets/image-37bf76be1.png' }

neler sorun mu

+0

Geçerli Rails ortamınız üretilmezse, bu tamamen normaldir. – born4new

+0

Ortamım gelişmedir, ancak http: // localhost: 3000/images/image.png' istediğimde 404 değerini döndürür. Raylar içinde "image_url" kullandığımda, düzgün çalışır ve özet karma ekler. Neden kontrolörde çalışmıyor? – drinor

cevap

2

Denetleyiciden bir görüntü oluşturmak istiyorsanız, view_context.image_url'u kullanmanız gerektiğine inanıyorum.

+0

Bu çalışmalara teşekkürler. – drinor

+0

Yardım ettiğine sevindim! – born4new

1

born4new'in önerdiği gibi, görüntüyü varlık borusundan düzgün bir şekilde referans almak için image_url kullanmanız gerekir. Ancak, varlık boru hattını burada kullanmanızı önermem. Öğelerinizi hazırlarken, varlık özet URL'nizin değişebileceğini unutmayın. Bu değeri bir API’dan sunduğunuzdan, bu, öğeleri yeniden derlemenizden sonra bir 404 oluşturabilecek bir URL ile yanıt verdiğiniz anlamına gelir. Bunun yerine, görüntünüzü public/ klasöründen statik varlık olarak sunmayı düşünmelisiniz. Bu şekilde, API'nizdeki herhangi bir tüketici, varlıklarınızı yeniden dağıttıktan veya yeniden oluşturduktan sonra bu dosyalara güvenilir bir şekilde erişebilir.

+0

Bu, önbellekleme sorununuz yoksa iyi bir çözümdür. – drinor