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 回答