我在現有的源代碼上實現了friendly_id
。情景就是這樣。主頁上有category
名稱。當用戶點擊這些類別中的任何一個鏈接時,當它具有該類別下的產品時,會將它們帶到頁面。此頁面有分頁。在執行friendly_id
之後,之前的網址曾經有category_id=number
,我的網址爲category_id=name
。friendly_id網址不適用於分頁。
舊的URL:
localhost:3000/search?category_id=208
新的URL:
localhost:3000/search?category_id=name
此URL分頁。
問題是,當我點擊這個網址上的第二頁時,它仍然具有與下面的id號相同的舊網址。
localhost:3000/search?category_id=208&page=2
我知道我失去了一些東西。有人可以告訴我如何解決這個問題。以下是我的控制器。 (它很嚇人,當你試圖在現有的代碼上實現新的東西時會發生什麼)。請檢查它的分頁結尾@equipments
。讓我知道是否需要更多信息。
控制器
def search_equipments
begin
if (params.keys & ['category_id', 'sub_category', 'manufacturer', 'country', 'state', 'keyword']).present?
if params[:category_id].present?
@category = Category.active.friendly.find_by_friendly_id params[:category_id]
else
@category = Category.active.friendly.find_by_friendly_id params[:sub_category] if params[:sub_category].present?
end
@root_categories = Category.active.roots
@sub_categories = @category.children.active if params[:category_id].present?
@sub_categories ||= {}
@countries = Country.active.all
@manufacturers = Manufacturer.active.all
@states = State.active.where("country_id = ?", params[:country]) if params[:country].present?
@states ||= {}
unless params[:category_id].present? && params[:sub_category].present?
params[:category_id] = @category.id if params[:category_id].present?
params[:sub_category] = @category.id if params[:sub_category].present?
end
@equipments = Equipment.active.filter(params.slice(:manufacturer, :country, :state, :category_id, :sub_category, :keyword)).order("#{sort_column} #{sort_direction}, created_at desc").page(params[:page]).per(per_page_items)
else
redirect_to root_path
end
rescue Exception => e
render :file=>"#{Rails.root}/public/404.html",:status=>404
end
end
在模板中,我傳遞了'<%= search_equipments_path(:category_id => category.slug)%>'。所以這在單擊下一頁之前工作正常。當我點擊下一頁時。它回到舊的URL。 – user3576036
如果我在'@ equipments'上方傳遞'params [:category_id] = @ category',那麼friendly_id正在處理分類分頁。但不適用於子類別。 – user3576036