Rails资源路由具有多个值的ID

时间:2014-03-11 17:15:18

标签: ruby-on-rails rest

如何创建一个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

或者我是不是手动制作这些?

2 个答案:

答案 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将其删除。