0

在我的 html.erb 视图中,我通常可以使用如下代码:

if current_user.role?(:label)
"do something"
end

我正在尝试在基于 Prawn 的 PDF 中执行相同的操作,但出现“未定义的局部变量或方法 `current_user'”错误。

我知道我需要在我的 PDF 类中明确包含一个帮助程序,例如:

class SalesnotePdf < Prawn::Document
  include CanCan::Ability
  "do pdf layout here"
end

但这似乎不起作用?关于正确包含或其他方法的任何想法?

提前致谢!

编辑:我认为 current_user 实际上是我需要访问的设计方法。

4

2 回答 2

1

嗯,current_user真的是一种设计方法,在视图、助手和控制器中可用,但在模型中不可用。更好的方法是检查用户在控制器中的角色,然后调用特定的 Prawn 文档。

于 2012-08-20T19:50:32.620 回答
0

除非每个用户都需要一个显着不同的报告,否则您可以将 view_context 作为参数之一传递。

控制器

...
format.pdf do
...
    pdf = MyPdf.new @records, reportDate, view_context
...
end

然后在 MyPdf 中你选择它......

def initialize(records, reportDate, view)
    super()
    @nonPagedTransactions = transactions
    @view = view

……

所以现在它可用于 MyPdf 中的所有方法(以及其他视图上下文帮助器),如果你说......

@view.current_user
于 2014-01-22T07:55:42.593 回答