0
我試圖通過標籤搜索,它工作正常。但之後,我開始使用gem will_paginate
的分頁,我不能這樣做,因爲我得到這個錯誤:未定義的方法`total_pages'爲#<Advertisement :: ActiveRecord_Relation:0x007fe4cdd7df98>
undefined method 'total_pages' for #<Advertisement::ActiveRecord_Relation:0x007fe4cdd7df98>
但是如果我搜索它工作正常未知的標籤(顯示在指數廣告的空列表頁)。
advertisemts_controller.rb
class AdvertisementsController < ApplicationController
before_action :authenticate_user!
before_action :set_advertisement, only: %i[edit update destroy]
def index
@advertisements = Advertisement.paginate(page: params[:page],
per_page: 2)
end
def show
@advertisement = Advertisement.find(params[:id])
end
def new
@advertisement = Advertisement.new
end
def create
@advertisement = Advertisements::Create.call(advertisement_params)
if @advertisement.errors.blank?
redirect_to advertisement_path(@advertisement),
notice: 'The advertisement was successfully added.'
else
render action: 'new'
end
end
def update
if @advertisement.update(advertisement_params)
redirect_to @advertisement, notice: 'Advertisement was
successfully updated.'
else
render :edit
end
end
def destroy
@advertisement.destroy
redirect_to advertisements_path, notice: 'Advertisement was
successfully destroyed.'
end
private
def set_advertisement
@advertisement = current_user.advertisements.find(params[:id])
end
def advertisement_params
params
.require(:advertisement)
.permit(:title, :description, :user_id, :tags)
.merge(user_id: current_user.id)
end
end
search_queries_controller.rb
class SearchQueriesController < ApplicationController
def search_by_tag
@advertisements = Advertisement.find_by_tags(tags_params)
render 'advertisements/index'
end
private
def tags_params
params.fetch(:tags, '')
end
end
advertisement.rb
class Advertisement < ApplicationRecord
has_many :advertisement_tags, dependent: :destroy
has_many :comments
has_many :tags, through: :advertisement_tags
belongs_to :user
validates :title,
:description,
presence: true
def self.find_by_tags(tags)
Advertisement.joins(:tags).where('tags.tag_name IN (?)',
tags.split(/[\s,']/))
end
end
我不知道如何解決這個問題,我使用ruby-2.3.4
和rails-5.1.2
,will_paginate-3.1
。
謝謝!現在它工作正常 –