我有以下路线:
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变成该格式。