has_one关系中的RESTful嵌套控制器

时间:2013-12-18 19:07:05

标签: ruby-on-rails

说我有User has_one ContactInfo

编辑contact_info的一种不可靠的方法是通过一个路径为:

的单一控制器来完成这一切。
myapp.com/users/15/edit_contact_info

更安静的方法是使用两个控制器,然后像这样路由:

myapp.com/users/15/contact_infos/23/edit

但是,我不喜欢这样,因为路由包含contact_info_id,这对于识别要更新的正确contact_info并不是必需的。另外,contact_info_id是用户可以看到的令人困惑的号码。 (他们可能知道自己的用户ID,但contact_info_id看起来像是一个任意数字。)

有没有办法像下面那样RESTful路由:

myapp.com/users/15/contact_infos/edit

或类似的东西?这是个坏主意吗?

2 个答案:

答案 0 :(得分:0)

resources :users do
  get "contact_info/edit" => 'users#edit_contact_info'
end

答案 1 :(得分:0)

我使用了复数路线,而不是单一路线。通过单一路线,我得到myapp.com/users/15/contact_info/edit

要是:

resources :users do
    resources :contact_infos
end

已更改为

resources :users do
    resource :contact_info
end