2013-03-29 15 views
0

我有嵌套的資源,我試圖爲每個單獨的資源創建表單部分用於每個新的和編輯操作。Rails 3嵌套的資源 - 表單部分只適用於新的或編輯,不是兩個

的routes.rb

resources :accounts, shallow: true, :except => [ :destroy ] do 
    resources :service,     :except => [ :destroy ] 
end 

如果我用下面的形式部分,編輯表單呈現正確,正確保存更新,但新的形式失敗,錯誤undefined method services_path

渲染

/app/views/services/_service_form.html.erb

<%= simple_form_for @service do |f| %> 

如果我用下面的形式部分,新的形式正確呈現和正確保存的對象,但編輯表單失敗,錯誤undefined method account_service_path

/app/views/services/_service_form.html渲染。 ERB

<%= simple_form_for [@account, @service] do |f| %> 

我試着加入url: service_path(@service)如圖所示形式塊聲明的兩個版本,但它並沒有解決任何問題。

肯定會有一些顯而易見的東西我錯過了這個工作,我確信我已經有嵌套資源正常工作與過去的單一形式部分,我只是看不到這次有什麼不同。

+0

可能重複:HTTP:// stackoverflow.com/questions/9772588/when-using-shallow-routes-different-routes-require-different-form-for-arguments – ramblex

+0

您是否在編輯操作中設置了@account變量?我認爲它應該與'<%= simple_form_for [@account,@service] do | f |一起工作%>'如果@account由例如'@account = @ service.account'設置。 – Arjan

回答

0

更改您的代碼如下 變化:服務:服務

鑑於您的帳戶型號 的has_many:服務 和服務模式有 belongs_to的:帳戶

resources :accounts, shallow: true, :except => [ :destroy ] do 
    resources :services,    :except => [ :destroy ] 
end