问题标签 [phoenix-framework]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elixir - 极其冗余的 Phoenix 控制器
我正在做我的第一个 Phoenix 应用程序,并尝试做 new/2 控制器。我写的代码是
但它看起来非常多余,我找不到更好的方法来做到这一点。我读过没有办法将 Map 转换为 Struct,并且由于参数的类型不同,它无论如何都不起作用。
那么任何人都可以告诉我一些神奇的方法来映射它吗?
elixir - Elixir/Plug/Phoenix:调用停止不会阻止下游插件在测试期间被调用
如果我启动我的 phoenix 应用程序的一个实例并用请求点击它,我的插件将适当地停止。但是,在测试环境中做同样的事情,停止并不会阻止下游的插件被调用,这会导致我的测试失败。我认为问题可能来自我在测试期间调用路由器的方式。这是我正在使用的辅助函数,它大量借用了 phoenix 框架本身的类似函数:
关于为什么像这样调用我的路由器会导致停止工作的任何想法?
编辑:所以我升级到 Phoenix 0.13.1 以使用他们的新端点测试模块而不是我推出的助手。我会报告这是否解决了问题。
elixir - Elixir Phoenix 中的可选 POST 参数
我有一个凤凰路由,我想将一些表单数据发布到,但是表单的大约 4 个字段是可选的(表单由最终用户构造,因此这些字段可能不存在于 POST 有效负载中)
在路由的 Phoenix 控制器中,您将如何处理?
例如:
我的表格有
并且发布表单必须始终具有Field1
并且Field2
但可以具有其他字段的任意组合。
所以到目前为止我的控制器代码是这样的:
如何使其他 3 个可选?如果我将它们全部添加,那么它们将是必需的,并且我不想为每个潜在的提交表单创建一个函数,因为这似乎有点过分了。
elixir - 如何在我的 ExUnit 测试中存根(或阻止运行)对工作人员的调用?
我有一个 Phoenix 应用程序(它只是一个没有前端的 restful api),其中一个控制器做了一些我想测试的东西,但是在控制器的末尾它调用了一个调度程序,它将一个有效负载发送给一个工作人员(在 poolboy 下运行)在后台处理接收到的有效载荷。
在我的控制器测试中,我实际上并不想测试工作人员正在做的事情,我只想知道工作人员的调度程序是否已使用正确的有效负载(例如 calledWith() )
理想情况下,调度程序函数被存根,所以实际的事情永远不会运行。
我可以向调度程序传递一个额外的参数,以确保它永远不会在工作人员上运行代码,但这看起来很混乱,而存根似乎是个好主意。
谢谢
编辑
调度员代码:
测试模拟:
elixir - 在 Poolboy 工作人员 (gen_server) 中使用 System.cmd 会导致静默失败
我有一个由 poolboy 工人产生的功能
基本概述:
- Phoenix Controller 用数据调用 Dispatcher
- Dispatcher 将数据传递给 Poolboy 工作人员
- Poolboy 工作人员使用给定数据生成一个新进程以进行处理
- 新进程使用数据调用系统命令(本例中为 wget)
我遇到的问题是,当我运行 ExUnit 测试时,它一直到生成的进程都很好,我可以输出数据(使用 IO.inspect)。
当我运行 System.cmd("wget".... 时,我在 ExUnit 测试运行时在终端中看到 wget 输出,因此该命令实际上正在运行,但是在该命令之后我所做的任何事情都没有运行。
所以在我的工人中,如果我这样做:
然后我看到hello
我看到了 wget 的输出,但我没有看到world
如果我做其他事情,例如:
然后我看到两者hello
,world
并且写入了一个文件。
是否有一些关于System.cmd
我遗漏的具体内容导致这种情况?当它不在单独的进程中运行时,它工作正常,因此它是进程和 System.cmd 的组合。
有任何想法吗?谢谢!
ruby-on-rails - Rails' before_filter equivalent in Phoenix
I've just started working on my first Phoenix app, and the issue is that I have some common lines of code in every action in my controller, that I would like to separate out. They fetch data from multiple Ecto Models and save them to variables for use.
In Rails, I could simply define a method and call it using before_filter
in my controller. I could access the result from an @variable
. I understand that using Plugs
is the key but I'm unclear on how to achieve this, more specifically:
- Accessing the request
params
from aPlug
- and making the variables accessible in actions
As a reference, this is the rails version of what i'm trying to do:
Thanks!
elixir - Phoenix Server 运行时如何在 Controller 中记录一些内容?
当服务器运行时,我正在尝试从我的 Phoenix 应用程序中的一个控制器打印一些调试信息。
elixir - Where can I put my Plugs and then use them from different controllers in my Phoenix app?
I'm creating my first Elixir
-Phoenix
app. I've written a few plugs that I want to use in multiple controllers, right now there is a lot of code duplication since the Plug code is being repeated in all of my controllers.
My question is, is there a file where I can put all of my Plugs and then access and use them from different controllers?
Then use them in my controllers:
elixir - 在 Phoenix 模板中选择字段
我知道Phoenix
提供了一些不错的 Railsy 助手,可以以如下形式使用:
text_input
number_input
date_select
- 和
submit
但我找不到select
字段。我一直在搜索Phoenix Docs,但找不到任何东西。
helper
所以我的问题是,表单中的选择字段是否有凤凰?
elixir - 如何从凤凰城的环境文件中获取变量值?
我正在部署我的第一个 Phoenix 应用程序,并且我已经在我的环境文件 (dev.exs
和prod.exs
) 中指定了一个变量的值。
现在我试图弄清楚如何在我的控制器中访问它们。