【发布时间】:2017-09-13 14:10:03
【问题描述】:
我的 rails 应用中有一个 Product 模型。
我想在products/index.html.erb 和AJAX 中实现一个实时搜索表单。
我通过 AJAX 成功获得了搜索结果:
<script>
var $search_field = $("#key_word");
var $table_body = $("#products_body");
$search_field.keyup(function(){
var search_keyword = $search_field.val();
var search_options = {
utf8: "✓",
key_word: search_keyword
}
function display_results(data) {
console.log(data); // Testing if I can get response correctly
};
$.getJSON("/products", search_options, display_results)
}) ;
</script>
检查开发工具的控制台,本地服务器在输入不同的单词时确实会发回正确的搜索结果。Here's a screenshot of dev tool console
以前我实现了一个简单的搜索表单并创建部分 views/products/_list_table 来处理表格。在 products_controller 我定义了@products,所以它可以部分使用。
这是 products_controller 中的index:
def index
if params[:key_word].present?
@products = Product.find_by_sql("# some sql code here")
else
@products = Product.all
end
set_price(@products)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @products}
end
end
这是部分内容:
<thead>
<tr>
<th>Name</th>
.
.
.
<th>Manu</th>
</tr>
</thead>
<tbody id="products_body">
<% @products.each do |product| %>
<tr>
<td><%= product.name%></td>
<td><%= product.brand%></td>
.
.
.
</tr>
<% end %>
</tbody>
但我不知道如何将 ajax 搜索结果(在这种情况下是 data 后跟 display_result() 函数)传递给部分。
我尝试使用$.each() 循环在脚本中生成新表单,但它使代码变得乏味。应该有一些方法可以将ajax数据发送到partial并以更干燥的方式生成表。
问题:在这种情况下,如何将我从ajax请求中获得的数据发送到部分_list_table,然后使用它来生成产品表?
有人可以帮我吗?谢谢。
【问题讨论】:
标签: jquery ruby-on-rails ajax