我想用ajax做过滤函数并渲染部分。我需要这两个的原因是因为有一个元素我不应该重新加载。正因为如此,我试图通过Ajax获取过滤的数据,并呈现部分过滤的数据。如果有什么我应该让你知道更多,请告诉我。用ajax过滤Rails和渲染部分
使索引页工作正常。
控制器/ item_controller.rb
def index
@items = Item.all
end
的意见/项目/ index.html.erb
<div>
An element that should not be reloaded
</div>
<div id="item_list_wrapper">
<%= render partial: 'item/item_list' %>
</div>
的意见/项目/ item_list.erb
<% @items.each do |i| %>
something
<% end %>
当我点击按钮,调用ajax并重载item/item_list.erb。
控制器/ item_controller.rb
def item_filter
filtered_items = Item.where(filtered item)
render json: filtered_items
end
的JavaScript
$.ajax({
method: 'get',
url: '/item/filter',
dataType: 'json',
data: {
price: $('#price').val()
},
success: function(data) {
console.log(data);
$("#item_list_wrapper").html("<%= escape_javascript(render partial: 'item/item_list') %>");
},
error: function(){
alert('error');
}
});
我可以看到在我的控制台中的AJAX称为数据。这花了我好几天的时间,但我真的找不到在重载项目/ item_list.erb中使用称为数据的ajax作为@items的方法。预先感谢所有意见。
您的路线也应该以复数形式命名为'/ items'。 – max
我相信文件名应该是app/views/items/filter.js.erb – abax
良好的捕捉@abax。 – max