轨道路径返回".id"而不是"/id"



我有以下路线:

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

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

如何解决此问题?

我要做的就是命名路线:

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

我相信这是由于已经使用了requirements_path。如果您对问题有更多了解,请发表评论。

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

在您的路由中:

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

然后requirement_path(1)将按照您的期望生成/requirements/1

P.S。当您使用requirements_path(1)时获得requirements.1的原因是,所有路由助手都接受其他参数format,该参数在路径末端成为格式(例如.xml)。由于您的路由辅助器不会期望任何路由参数,因此将ID变成该格式。

最新更新