【问题标题】:Link to create action with phoenix与凤凰创建动作的链接
【发布时间】:2018-01-15 16:13:12
【问题描述】:

我正在尝试使用在 Phoenix 中使用 link_helpers 的链接来触发创建操作。但是似乎没有一个明显的答案,所以这让我认为这可能是一种不好的做法?

这是我正在尝试的:

<%= link "Create Prediction Points", to: prediction_score_path(@conn, :create) %>

错误:

function StatcastersWeb.PredictionScoreController.index/2 is undefined or private

有没有办法做到这一点?如果是这样,我应该吗?

【问题讨论】:

  • 你能发布完整的错误信息吗?看起来您的控制器中的函数名称错误或不带 2 个参数。
  • 另外,您的路线定义是什么样的?

标签: elixir phoenix-framework


【解决方案1】:

任何可能改变服务器上某些内容的操作都应该在 HTTP POST 之后,而不是在 HTTP GET 之后。因此,即使您可以在控制器中设置指向 create 操作的链接,我们绝对可以并且我们将在一秒钟内完成,但不建议这样做,因为 create 操作通常创建 em> 服务器中的某些东西,如果你把它放在链接后面,浏览器插件、爬虫或类似的东西可能会意外访问它。

也就是说,如果您在应用程序中运行mix phx.routes,您将看到以下路由:

GET  /prediction_scores/ index
POST /prediction_scores/ create

即URL 是相同的,但请求之间的变化是 HTTP 动词(GET 与 POST)。这就是为什么它试图调用index/2,而不是create/2。您可以通过两种方式修复它:

    1234563 .
  1. 如果您在服务器上的操作只是要渲染某些东西,那么您应该使用index 操作或您可以在路由器+控制器中创建的其他创建。

    李>

【讨论】:

  • 感谢您的详细解答。超级有用
猜你喜欢
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 2017-08-07
  • 2016-08-19
  • 2018-02-03
  • 2017-01-29
  • 2017-06-05
  • 1970-01-01
相关资源
最近更新 更多