我希望我的高级搜索表单在提交后保留其表单域的值,因此我使用method=POST将表单更改为ajax。我的控制器仍然工作得很好,我能够进行rest调用,并因此获得数据。
问题是我不知道如何用ajax重新呈现页面。我不希望ajax与响应有任何关系,因为响应逻辑是内置在advanced_search_order_table中的。我只需要Ajax来重新加载advanced_search_orders_table。
<%= render "advanced_search_orders_form" %>
<div id="advanced_search_orders_table" class="fk-table ajax">
<%= render "advanced_search_orders_table" %>
</div>
在advanced_search_orders_form.html.erb中(仅部分代码段)
form id="advancedSearchOrder" name="advancedSearchForm" value="advancedSearch" class=" search line" action="" onsubmit="return submitForm();">
<div class="advancedSearchFormField">
<span class="advancedSearchFormlabel">Order Id</span>
<%= text_area_tag('filters[order_id]',filter_params['order_id'],:rows=>10) %>
</div>
<div class="advancedSearchFormSelectField">
<span class="advancedSearchFormlabel"> Order Sales Channel </span>
<%= select_tag 'filters[order_sales_channel]',
options_for_select(
[["Web", "Web"], ["Phone", "Phone"]]
),
selected: filter_params['order_sales_channel'],
multiple: true,
class: "advancedSearchFormSelectBox" %>
</div>
<input type="submit" class="advanced-search-btn" id="advancedSearchButton" name="advancedSearchButton" value="Search"/>
我将submitForm定义为
function submitForm() {
$.ajax({type:'POST',url: '', data:$('#advancedSearchOrder').serialize(), success: function(response) {
/*Render advanced_search_orders_table here */
}});
return false;
}
发布于 2013-03-24 23:11:36
只需使用JavaScript解析您的响应。基本上,从表中删除行,然后为每个结果添加一行。你也可以添加一些漂亮的动画;)
另一种选择是使用已经呈现的包含数据的HTML页面来响应AJAX调用,然后用新的表格替换表格(再次使用JavaScript )。我不知道哪一个会表现得更好。
https://stackoverflow.com/questions/15597929
复制相似问题