如何创建一个Rails资源路由,其ID值超过1?
示例:
你有一个名为widget
的资源,它的ID是2个字符串:“foo”和“bar”。
你能拥有这样的网址吗?
Index: http://domain.com/widgets
New: http://domain.com/widgets/new
Create: http://domain.com/widgets
Show: http://domain.com/widgets/foo/bar
Edit: http://domain.com/widgets/foo/bar/edit
Update: http://domain.com/widgets/foo/bar
Destroy: http://domain.com/widgets/foo/bar
或者我是不是手动制作这些?
答案 0 :(得分:2)
resources :domains, only: [:index, :new, :create]
get 'widgets/*id', to: 'widgets#show'
get 'widgets/*id/edit', to: 'widgets#edit'
put 'widgets/*id', to: 'widgets#update'
delete 'widgets/*id', to: 'widgets#destroy'
你会将params [:id]改为'foo / bar'
答案 1 :(得分:0)
我不想回答我自己的问题。我确实找到了解决方案。在Rails 4中,资源有一个:param
参数,可用于设置多个项目。
resources :widgets, param: 'first_id/:second_id'
请注意,第一个参数没有冒号,但另一个没有冒号。这是让它发挥作用的关键。
在Rails 2中,此参数称为:key
,Rails 3将其删除。