2014-11-21 73 views
0

好的...我有一個命名空間模型Operations::Expense。 上的routes.rb資源聲明「作用域」因爲我不想路徑‘/操作/費用’(只是‘/費’):Rails模型命名空間和named_helpers

scope module: 'operations' do 
    resources :expenses 
end 

新建/編輯形式:

<%= form_for @operation, as: 'operation' %> 

其中@operation是費用對象。

的問題是:當我打開「/費用/新」,得到了錯誤

undefined method 'operations_expenses_path' 

如何解決,保持命名空間出來的URL的?

P.S:已經嘗試過的form_for的url選項與expenses_path(@operation)但沒有工作......

+0

它的工作對我來說。你能從'Operations :: ExpensesController'類中顯示'new' /'edit'方法嗎? – Surya 2014-11-21 12:19:17

+0

[你的第一條路線有'範圍模塊:'操作''的權利,並且應該生成沒有前綴的路徑只是''/expenses''.((http://guides.rubyonrails.org/routing.html#controller-namespaces-and -routing) – 2014-11-21 12:23:32

+1

'rake routes'說什麼? – janfoeh 2014-11-21 12:27:46

回答

1

Rails的使用模型類:Operations::Expense創建路線newedit方法。因爲它嘗試使用命名空間並將其轉換爲路由,如:operations_expenses_(path/url)

因爲,您有scope module: 'operations',它會創建expenses_(path/url)方法。

試着改變你的路線是:

namespace :operations, path: '/' do 
    resources :expenses 
end 

這將創建operations_expenses_(path/url)輔助方法,還沒有'/expenses'路線。

然而,提供的URL form_for應該只是罰款(因爲它的工作對我來說):

new -

<%= form_for(@operation, as: 'operation', url: expenses_path, method: :post)) do |f| %> 

對於edit -

<%= form_for(@operation, as: 'operation', url: expenses_path(@operation), method: :patch)) do |f| %> 
+0

它解決了!謝謝! – thaleshcv 2014-11-21 14:24:15

相關問題