2016-03-26 20 views
0

Raylar üzerinde yakmak için oldukça yeni oldum ... Benim _form.html.erb hakkında collection_select alanımda Ürün adlı bir Modelden alınmış bir alana sahibim. Ürünün tablo sütunları id, name, and price'dur. Koleksiyondan bir ürün (ürün) seçtiğimde, seçilen ürünün fiyatı ile bir metin alanı doldurmak istiyorum.Yaklaşma olayının ne zaman tetiklendiği (rubils 4 üzerinde ruby) ne zaman bir yakut yöntemi çağırılır?

Şimdiye kadar sahip bir öğe seçerken IOT bir olayı tetiklemek Aşağıdaki kod:

<%= collection_select(:warehouse, :product_id, Product.all, :id, :name, {}, {:onchange => "alert('Hello World');"})%> 
beni seçilen ürünün ilgili fiyat ile text_field doldurmak izin verecek bir yakut yöntemini çağırabilirsiniz nasıl

? Ben böyle bir şey düşünüyordum yöntem için

...

def set_price 
     @price = Product.find(params[:id]).price 
end 

cevap

0

erb pasajı

<%= collection_select(:warehouse, :product_id, Product.all, :id, :name, {}, {:onchange => "alert('Hello World');"})%> 

html Yani bu

<select name="warehouse[product_id]" onchange="alert('Hello World');"> 
    <option value="1">Product 1</option> 
    <option value="2">Product 2</option> 
    ... 
</select> 

onchange içeriği gibi pasajı oluşturur sadece tarayıcılarda çalışan bir javascript parçasıdır. onchange ruby ​​kodunun doğrudan çalıştırılmasına izin verilmesinin bir yolu yoktur. Tek yapmanız gereken onchange'da bir AJAX isteği göndermek ve Rails uygulamanızın bu isteğe yanıt vermesine izin vermek.

+0

AJAX olmadan bunu gerçekleştirmenin başka bir yolu var mı. C# Bu görevi kontrol olaylarını geri aramalarla gerçekleştirmeyi başardım. Ruby'de geri aramalar yoluyla collection_select olaylarını işlemek mümkün mü? Gerekmiyorsa, gerekli olana ulaşmak için en iyi uygulama hangisidir? –

+0

'ASP.net''in geri arama sistemi de AJAX'ı temel alıyor (eğer istemci tarafında betik dili olarak javascript'i seçtiyseniz). Daha fazla bilgi için [https://msdn.microsoft.com/en-us/library/ms178208.aspx](https://msdn.microsoft.com/en-us/library/ms178208.aspx] adresine bakın. – Aetherus

+0

Kesinlikle haklısınız. Bu yaklaşımı deneyeceğim. Yardımınız için çok teşekkürler Aetherus –

İlgili konular