您想在更改收藏时立即显示图片吗?
您可以通过两种方式做到这一点:
1.添加data-image-url
选项
最好的方法是将图像 url 添加到选项使用中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