1
我希望我的索引根据价格降低和价格上升而改变,就像亚马逊一样。Javascript获得Rails Ajax请求响应后重做html
现在,我发送一个ajax请求到站点,用select的新值请求数据。该网站从数据库获取数据并对其进行分类。
我的JavaScript如何重新绘制我的索引页中的排序书籍响应卡?
BookController.rb
def index
if params.dig("book", "title").nil? && params.dig("users", "university").nil?
@books = Book.where({title: params.dig("book", "title")})
.joins(:user).where(users: {university: params.dig("users", "university")})
elsif !params.dig("book", "title").nil? && params.dig("users", "university").nil?
@books = Book.where({title: params.dig("book", "title")})
elsif params.dig("book", "title").nil? && !params.dig("users", "university").nil?
@books = Book.joins(:user).where(users: {university: params.dig("users", "university")})
else
@books = Book.all
end
case params[:sort]
when "Price Descending"
@books.order(price_cents: "DESC")
when "Price Ascending"
@books.order(price_cents: "ASC")
else
@books.sort_by(&:created_at)
end
end
书Index.html.erb
<select id="priceSelect">
<option value="Best Results" selected="selected">Best Results</option>
<option value="Price Descending">Price Descending</option>
<option value="Price Ascending">Price Ascending</option>
</select>
.
.
.
<% @books.each do |book| %>
<div class="col-xs-12 selectable-card">
<%= link_to book_path(book.id) do %>
...
<% end %>
</div>
<% end %>
<script>
$('#priceSelect').change(function(){
$.ajax({
url: "books",
type: "GET",
data: {sort: $('#priceSelect :selected').val()},
success:function(result){
console.log(result);
},
})
});
</script>
而且最后我的routes.rb
resources :books do
resources :users
end
我是否会编写respond_to do | format | ...在我的索引控制器的底部,或者我必须在哪里放置这些代码? –
是的。在底部。 – Pablo
你的ret是我的结果。不知何故,如果我console.log(ret),它给了我整个html。使用var books = JSON.parse(ret)给我一个意想不到的标记<在位置0的JSON中。所以我尝试使用var books = ret,但是使用它不会改变任何东西。虽然 –