0

私のアプリは 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, '&laquo;', 'previous_page')
  end

  def next_page
    num = @collection.current_page < total_pages && @collection.current_page + 1
    previous_or_next_page(num, '&raquo;', 'next_page')
  end
end
4

1 に答える 1

0

とりあえず を削除してconfig/initializers/bootstrap_link_renderer.rb、問題が解決するかどうかを確認してください。CanCan -> Pundit の変更とはおそらく無関係です。

于 2014-04-08T07:54:35.537 に答える