嵌套路由导致我的表单出现问题

时间:2013-03-30 00:46:02

标签: ruby-on-rails forms

我的嵌套路由设置如下:

  resources :clients do
    resources :contacts
  end

和我的更新操作表单如下:

= form_for @contact, :url => client_contacts_path(@contact.client), :html => { :multipart => true } do |f|

但是当我去保存时,我收到了这个错误:

No route matches [PUT] "/clients/3/contacts"

我不太清楚为什么不尝试路线:/ clients / 3 / contacts /:id

我的表格中缺少什么?

1 个答案:

答案 0 :(得分:2)

尝试将 form_for 调用更改为:

= form_for [@client, @contact], :html => { :multipart => true } do |f|

Rails会自己弄清楚它所需要的一切:

  • 当@contact是新记录时,它会生成 / clients /:client_id / contacts / new url
  • 当@contact已经存在时,它将生成 / clients /:client_id / contacts /:id / edit url

有关form_for的更多信息。