所以我有過這種工作在過去的各種形式,但從來沒有一起工作。Rails,如何使用searchlogic重新排序返回的對象
僅供參考我有類別/品牌/產品,有正確的關係工作:該網站是http://emeraldcityguitars.com看到它的行動。
所以在我的品牌控制器show動作:
@category = Category.find_by_url_name(params[:category_id])
@brand = Brand.find(params[:id])
@search = Product.brand_id_equals(@brand.id).category_id_equals(@category.id).descend_by_price
@products = @search.paginate(:page => params[:page])
這工作得很好,因爲在我的日誌證明:
Category Load (25.6ms) SELECT * FROM "categories"
Category Load (0.2ms) SELECT * FROM "categories" WHERE ("categories"."url_name" = 'acoustic-guitars') LIMIT 1
Brand Load (0.6ms) SELECT * FROM "brands" WHERE ("brands"."id" = 14)
Product Load (4.8ms) SELECT * FROM "products" WHERE ((products.category_id = 3) AND (products.brand_id = 14)) ORDER BY products.price DESC LIMIT 6 OFFSET 0
SQL (0.2ms) SELECT count(*) AS count_all FROM "products" WHERE ((products.category_id = 3) AND (products.brand_id = 14))
Rendering template within layouts/application
Rendering brands/show
你可以看到,它的抓產品下降的價格。
在我的品牌#表明我做了以下內容:
<%- form_for [@category, @brand], :html => {:method => 'get', :id => 'sort_form', :class => 'sort_form'} do -%>
<label>Sort by: </label> <%= select_tag :order, product_sort_options %>
<%= submit_tag 'Go' %>
<%- end -%>
的目標是,用戶可以通過幾個不同的選擇排序。
我也有這個在我的products_helper:「爲了= ascend_by_price」
def product_sort_options
options_for_select([
['', nil],
['Newest to Oldest', 'descend_by_date'],
['Oldest to Newest', 'ascend_by_date'],
['Price: Highest to Lowest', 'descend_by_price'],
['Price: Lowest to Highest', 'ascend_by_price'],
['Name', 'ascend_by_name']
])
end
我遇到的問題是,如果我點擊下拉,做價格最低到最高重新加載頁面,用在網址的末尾,但產品的順序沒有變化。
任何幫助表示讚賞。
我不得不稍微修改,但是這樣做了。 –