问题标签 [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.

0 投票
2 回答
498 浏览

elixir - 极其冗余的 Phoenix 控制器

我正在做我的第一个 Phoenix 应用程序,并尝试做 new/2 控制器。我写的代码是

但它看起来非常多余,我找不到更好的方法来做到这一点。我读过没有办法将 Map 转换为 Struct,并且由于参数的类型不同,它无论如何都不起作用。

那么任何人都可以告诉我一些神奇的方法来映射它吗?

0 投票
1 回答
1246 浏览

elixir - Elixir/Plug/Phoenix:调用停止不会阻止下游插件在测试期间被调用

如果我启动我的 phoenix 应用程序的一个实例并用请求点击它,我的插件将适当地停止。但是,在测试环境中做同样的事情,停止并不会阻止下游的插件被调用,这会导致我的测试失败。我认为问题可能来自我在测试期间调用路由器的方式。这是我正在使用的辅助函数,它大量借用了 phoenix 框架本身的类似函数:

关于为什么像这样调用我的路由器会导致停止工作的任何想法?

编辑:所以我升级到 Phoenix 0.13.1 以使用他们的新端点测试模块而不是我推出的助手。我会报告这是否解决了问题。

0 投票
1 回答
5359 浏览

elixir - Elixir Phoenix 中的可选 POST 参数

我有一个凤凰路由,我想将一些表单数据发布到,但是表单的大约 4 个字段是可选的(表单由最终用户构造,因此这些字段可能不存在于 POST 有效负载中)

在路由的 Phoenix 控制器中,您将如何处理?

例如:

我的表格有

并且发布表单必须始终具有Field1并且Field2但可以具有其他字段的任意组合。

所以到目前为止我的控制器代码是这样的:

如何使其他 3 个可选?如果我将它们全部添加,那么它们将是必需的,并且我不想为每个潜在的提交表单创建一个函数,因为这似乎有点过分了。

0 投票
1 回答
1893 浏览

elixir - 如何在我的 ExUnit 测试中存根(或阻止运行)对工作人员的调用?

我有一个 Phoenix 应用程序(它只是一个没有前端的 restful api),其中一个控制器做了一些我想测试的东西,但是在控制器的末尾它调用了一个调度程序,它将一个有效负载发送给一个工作人员(在 poolboy 下运行)在后台处理接收到的有效载荷。

在我的控制器测试中,我实际上并不想测试工作人员正在做的事情,我只想知道工作人员的调度程序是否已使用正确的有效负载(例如 calledWith() )

理想情况下,调度程序函数被存根,所以实际的事情永远不会运行。

我可以向调度程序传递一个额外的参数,以确保它永远不会在工作人员上运行代码,但这看起来很混乱,而存根似乎是个好主意。

谢谢

编辑

调度员代码:

测试模拟:

0 投票
2 回答
746 浏览

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

如果我做其他事情,例如:

然后我看到两者helloworld并且写入了一个文件。

是否有一些关于System.cmd我遗漏的具体内容导致这种情况?当它不在单独的进程中运行时,它工作正常,因此它是进程和 System.cmd 的组合。

有任何想法吗?谢谢!

0 投票
2 回答
3315 浏览

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 a Plug
  • and making the variables accessible in actions

As a reference, this is the rails version of what i'm trying to do:

Thanks!

0 投票
2 回答
27850 浏览

elixir - Phoenix Server 运行时如何在 Controller 中记录一些内容?

当服务器运行时,我正在尝试从我的 Phoenix 应用程序中的一个控制器打印一些调试信息。

0 投票
1 回答
3697 浏览

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:

0 投票
2 回答
8133 浏览

elixir - 在 Phoenix 模板中选择字段

我知道Phoenix提供了一些不错的 Railsy 助手,可以以如下形式使用:

  • text_input
  • number_input
  • date_select
  • submit

但我找不到select字段。我一直在搜索Phoenix Docs,但找不到任何东西。

helper所以我的问题是,表单中的选择字段是否有凤凰?

0 投票
2 回答
11684 浏览

elixir - 如何从凤凰城的环境文件中获取变量值?

我正在部署我的第一个 Phoenix 应用程序,并且我已经在我的环境文件 (dev.exsprod.exs) 中指定了一个变量的值。

现在我试图弄清楚如何在我的控制器中访问它们。