【问题标题】:Why does rails resource not generate edit and new paths?为什么 rails 资源不生成编辑和新路径?
【发布时间】:2018-11-30 09:13:35
【问题描述】:

我有一个PasswordsController 来处理密码恢复,我想将其作为单一资源进行路由。

来自路由器的代码:

resource :password

我想使用生成的路由如下:

/password/new    # User enters email
/password/create # Send email with link to password edit form with token
/password/edit   # User edits password
/password/update # Password is changed

但由于某种原因,rails 只生成以下路线:

password GET    /password(.:format) passwords#show
         PATCH  /password(.:format) passwords#update
         PUT    /password(.:format) passwords#update
         DELETE /password(.:format) passwords#destroy
         POST   /password(.:format) passwords#create

根据文档,还应该有一个edit 路径和一个new 路径。

他们为什么不见了?

(这是轨道 5.2.1.1)

编辑:如 cmets 中所述,问题一定出在我的应用配置的某个地方,因为干净的 Rails 应用无法重现此问题。

【问题讨论】:

  • @AjayBarot:您链接的答案说resource 应该生成新的/编辑路线。你想说什么?
  • 无法在全新的 Rails 5.2.1.1 应用程序中重现。我看到所有 6 条路线。您的代码中的其他内容正在干扰。
  • @SergioTulentsev 是的,这可能是我的应用程序中的一些设置。我只是不知道它可能是什么。我已经用一个新的 rails 应用程序中的 development.rb 对其进行了测试。没有成功。

标签: ruby-on-rails url-routing


【解决方案1】:

看起来你有一个 api_only 应用程序。 在这种情况下,Rails 省略了编辑和新路径。 见:https://github.com/rails/rails/blob/fc5dd0b85189811062c85520fd70de8389b55aeb/actionpack/lib/action_dispatch/routing/mapper.rb#L1230

【讨论】:

  • 啊,很好的发现。确实,新/编辑路线在 api 中没有意义。
  • 就是这样!我完全错过了。但似乎也没有记录这种行为。
  • @lukad:是否需要记录?在没有 GUI 的仅 api 应用程序中,您会使用 edit 做什么?它的全部目的是呈现空白表单。所以 rails 会默默地做正确的事,就像在许多其他情况下一样。
  • @SergioTulentsev 该应用程序曾经是一个严格的 API 应用程序,直到我尝试添加此功能。所以这绝对是一个边缘案例,但记录它不会受到伤害。我会检查是否可以为此创建 PR。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 2012-01-30
  • 2017-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多