Rails路径返回“.id”而不是“/ id”

时间:2016-06-23 17:10:24

标签: ruby-on-rails

我有以下路线:

get 'requirements/' => 'requirements#index'
post 'requirements/' => 'requirements#create'
delete 'requirements/:id' => 'requirements#destroy'

问题是requirements_path(id)正在返回/requirements.id而不是/requirements/id

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我所要做的只是命名路线:

delete 'requirements/:id' => 'requirements#destroy', as: :requirement

我认为这是因为requirements_path已被使用。如果您对此问题有更多了解,请发表评论。

答案 1 :(得分:0)

您可以通过命名路线来解决您的问题,但更好的解决方法是使用Rails resource路由工具,它将为您命名路线。这也可以让您使用正确命名的requirement_path(id)助手(请注意单数requirement,而不是requirements)。

在您的routes.rb中:

  resources :requirements, only: [:show, :create, :destroy]

然后requirement_path(1)会按预期生成/requirements/1

P.S。使用requirements.1时获得requirements_path(1)的原因是因为所有路由助手都接受了另一个参数format,该参数最终成为格式(例如.xml)的路径。由于您的路由助手不期望任何路由参数,因此它将ID转换为该格式。