繁体   English   中英

无法使用宏using剂插入

[英]Cant use plug in using macro elixir

因此,phoenix我想在base_controller.ex中混合一些插件,但是

plug :xxx when action in [:xxx]

但是,当我将其添加到__using__宏操作时,似乎是未定义的,即

defmacro __using__(opts) do
  quote do
    use XXX.Web, :controller
    plug :xxx when action in [:xxx]
  end
end

结果是:

unknown variable action or cannot invoke local action/0 inside guard

好像动作来自use XXX.Web, :controller所以我不确定为什么未定义。 这里有什么想法吗?

克里斯

该错误消息可能会更好,但这似乎是由于宏卫生所致,该宏在将其发送到plug宏之前正在重命名action 我们可以使用Kernel.var!/1对可变action禁用卫生action 以下对我有用:

quote do
  use XXX.Web, :controller
  plug :xxx when var!(action) in [:xxx]
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM