私のアプリは CanCan を使用していましたが、Pundit に切り替えたいと考えています。Pundit を Gemfile に追加し、CanCan を削除bundle
して実行した後、ジェネレーター ( rails g pundit:install
) を実行しようとすると、次のエラーが発生しました。
...config/initializers/bootstrap_link_renderer.rb:1:in `<top (required)>': uninitialized constant WillPaginate::ActionView (NameError)
これが私のapplication_controller.rbファイルです:
class ApplicationController < ActionController::Base
include Pundit
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
before_filter :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update) << :avatar
end
def after_sign_in_path_for(resource)
topics_path
end
end
ブートストラップ リンク レンダラーは次のとおりです。
class BootstrapLinkRenderer < WillPaginate::ActionView::LinkRenderer
def html_container(html)
tag(:ul, html, container_attributes)
end
def page_number(page)
tag :li,
link(page, page, rel: rel_value(page)),
class: ('active' if page == current_page)
end
def gap
tag :li,
link(super, '#'),
class: 'disabled'
end
def previous_or_next_page(page, text, classname)
tag :li, link(text, page || '#')
end
def previous_page
num = @collection.current_page > 1 && @collection.current_page - 1
previous_or_next_page(num, '«', 'previous_page')
end
def next_page
num = @collection.current_page < total_pages && @collection.current_page + 1
previous_or_next_page(num, '»', 'next_page')
end
end