2017-10-27 9 views
1

Canaryと一緒にCoherenceを使用しようとしています。このサンプルはcoherence_demo with canaryです。 (branchそのcanaryの上)上記のサンプルはまだPhoenixPhoenix Elixir Canary/Canada未定義の機能は?内部テンプレートビューにアクセスしようとしたときに?

の以前のバージョンを使用している間、私はPhoenix v1.3.0を使用していますことを除いて

は(間違い/内部コントローラを介して働いて)私はそれが動作するように持っているようですただし、(レイアウト)テンプレートビュー内からCanaryCanadacan?3機能にアクセスすることはできません。

私は、このエラーを与える:possibily間違っている何./lib/abilities.ex

== Compilation error in file lib/my_project_web/views/layout_view.ex == ** (CompileError) lib/my_project_web/templates/layout/app.html.eex:20: undefined function can?/3 (stdlib) lists.erl:1338: :lists.foreach/2 (stdlib) erl_eval.erl:670: :erl_eval.do_apply/6 (elixir) lib/kernel/parallel_compiler.ex:121: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1

abilities.exファイルはとても似libディレクトリ内にありますか?テンプレートビューで使用できるようにCanada/Canaryの登録方法は?

+1

それはオフトピックだがコヒーレンスはあなたひどいですし、それを使用しない方が良いでしょう – JustMichael

+0

別の提案がありますか?あなたの経験から[Guardian](https://github.com/ueberauth/guardian)の方が優れていますか? 「Canary's Github Issues」(https://github.com/cpjk/canary/issues)に直接お尋ねする方がいいかもしれないと思っています' - 'コヒーレンス 'の組み合わせ。 – siriusdely

+0

'web.ex'の' view'関数に 'import Canada.Can'を次のように追加しましたか?https://github.com/smpallen99/coherence_demo/blob/a59db0cdf7a4c27c9afc9c059a36facef8282a87/web/web.ex#L55 ? – Dogbert

答えて

3

can?は、Canada.Canモジュールで定義されています。エラーメッセージは、ビューがそのモジュールをインポートしないことを示しています。

In web/web.ex:サンプルプロジェクトは、あなたはおそらく忘れてしまったweb/web.exview関数にインポートを追加することによって、すべてのビューでそのモジュールの輸入にリンク

defmodule CoherenceDemo.Web do 
    def view do 
    quote do 
     ... 

     import Canada.Can 
    end 
    end 
end 
+0

これはそれです!これは私の問題を解決します。ありがとうございました。 – siriusdely

関連する問題