コレクションを変更してすぐに写真を表示したいですか?
これは次の 2 つの方法で行うことができます。
1.data-image-url
オプションに追加
最良の方法は、画像の URL をオプション use に追加することdata-image-url
です。
<%= f.association :product, include_blank: false, label: 'Product', input_html: {class: 'product_select' do %>
<%= f.select :product, @products.map{|a| [a.name, a.id, {"data-image-url" => a.image_url}]} %>
<% end %>
そして、このJavaScriptを使用してください:
<script type="text/javascript">
$(".product_select").change(function(){
var selection = $(this).find(':selected').data("imageUrl"); //The product image url
$('#prodPicture').html("<img src='" + selection + "' />")
});
</script>
2. ajax を使用する
ajax javascript 使用ポスト:
<script type="text/javascript">
$(".product_select").change(function(){
var selection = $(this).val();
$.post("/products/return_image_url",
{product_id: selection},
function(data) {
if (data != null) {
$('#prodPicture').html("<img src='" + data + "' />")
}
}
)
});
</script>
そして、これに関するルビーアクション:
def return_image_url
product = Product.find(params[:product_id])
...
respond_to do |format|
format.json { render :json => product.image_url }
end
end
そして、私はあなたがよりよく使うと思いますAdd data-image-url to option
。
私は何かを書きたいremote: true
:
remote: true
から来て、 、またはjquery_ujs
で使用できます。リンクが必要です。セレクトやラジオなどを変えると使えなくなりました。link_to
button_to
submit
remote: true
ガイドで詳細を学ぶことができremote: true
ます: http://guides.rubyonrails.org/working_with_javascript_in_rails.html