我知道您只需提供remote: true
即可通过ajax请求在rails中提交表单:
<%= form_for(@user, remote: true) do %>
...
<% end %>
现在:当表单提交时:而不是HTTP请求,它是一个ajax请求。
我想要做的是提交一个JS请求(ajax请求)不是针对整个表单,而是针对特定的字段元素,但它不起作用。具体来说:当用户在选择框中进行选择时,应启动ajax请求:
<%= form_for(@user) do %>
<div class="field">
<%= f.label :food_type_id %>
<%= f.collection_select :food_type_id, FoodType.all, :id, :name, remote: true %>
</div>
...
<% end %>
我希望将AJAX请求发送到服务器,因为我在该字段上提供了remote: true
选项。所以:每当用户做出选择时:ajax请求就会触发。然而:什么都没发生。
我错过了什么?我知道我可以自己完成所有操作:将事件监听器绑定到客户端的选择框,并在选择框更改时触发请求。但是:我认为remote: true
可以为您处理ajax请求,因此我不需要进行任何自定义ajax请求构建。
答案 0 :(得分:2)
Rails的内置表单帮助程序允许您对以下帮助程序使用remote: true
:form_tag
,form_for
,link_to
和button_to
。将remote: true
添加到表单内的单个字段将不起作用。见Working with Javascript in Rails。
您需要将javascript函数绑定到food_type_id
select:
$('select#user_food_type_id').change(function() {
$.ajax({
url: '/food_types.json', // you could be fancy and set this in a data attribute.
success: function(response) {
// update your form with the response from your ajax request
}
});
});