0

私のhtml.erbビューでは、通常、次のようなコードを使用できます。

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

エビベースのPDFで同じことを行おうとしていますが、「未定義のローカル変数またはメソッド`current_user'」エラーが発生します。

PDFクラスに次のようなヘルパーを明示的に含める必要があることを理解しています。

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

しかし、これは機能していないようですか?これに対する正しいインクルードまたは他のアプローチに関するアイデアはありますか?

前もって感謝します!

編集:current_userは、実際にはアクセスする必要のあるDeviseメソッドだと思います。

4

2 に答える 2

1

まあ、current_user実際には Devise メソッドであり、ビュー、ヘルパー、およびコントローラーで使用できますが、モデルでは使用できません。より良いアプローチは、コントローラーでユーザーの役割を確認してから、特定の Prawn ドキュメントを呼び出すことです。

于 2012-08-20T19:50:32.620 に答える
0

各ユーザーが大幅に異なるレポートを必要としない限り、パラメーターの 1 つとして 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 に答える