1
私のインデックスは、価格の降順と価格の上昇がAmazonのように変わります。Rails Ajaxリクエストからの応答を得た後のJavascriptのやり直し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
あなたのレターは私の結果です。どういうわけか、もし私console.log(ret)、それは私に全体のHTMLを与える。 var books = JSON.parse(ret)を使用すると、JSONの位置0のUnexpectedトークンが返されます。var books = retを使用しようとしましたが、これを使用しても何も変更されません。 –