我在我的模型文件中創建了單表繼承模型,並且在路由時遇到困難。當我使用:在我的資源中,它重命名我的命名路徑。單表繼承模型rails的嵌套路由3.1
型號文件:
class Account < ActiveRecord::Base
belongs_to :user
end
class AdvertiserAccount < Account
end
class PublisherAccount < Account
end
的routes.rb
resources :advertiser_accounts, :as => "accounts" do
resources :campaigns
end
我使用:在我的路線,因爲它是一個單一的表繼承,我想通過ACCOUNT_ID而不是advertiser_account_id。我的鏈接是http://127.0.0.1:3000/advertiser_accounts/1/campaigns
/advertiser_accounts/:account_id/campaigns/:id(.:format)
然而,使用:如重命名從advertiser_account_campaigns到account_campaigns我命名的道路。我的路線看起來像
account_campaigns GET /advertiser_accounts/:account_id/campaigns(.:format) campaigns#index
所以,當我創建使用的form_for一個新的項目,我會得到 「未定義的方法`advertiser_account_campaigns_path'」
編輯:當前黑客攻擊的解決方案
A爲中心的方式破解我正在使用的是複製路由文件中的代碼。任何人都有建議?
resources :advertiser_accounts, :as => "accounts" do
resources :campaigns
end
resources :advertiser_accounts do
resources :campaigns
end
你可以發佈你的erb /表單代碼嗎?謝謝 – plainjimbo 2012-04-01 00:30:35
其實,這不僅僅是表單代碼。如果使用:as,我無法鏈接到我的嵌套路徑。例如,link_to代碼<%= link_to'顯示所有廣告系列',advertiser_account_campaigns_path(@advertiser_account)%>將返回「未定義的方法'advertiser_account_campaigns_path'」。這是因爲當我使用as =>「accounts」時,advertiser_account_campaigns_path的命名路徑被重命名爲account_campaigns_path。我希望能夠創建一個像127.0.0.1:3000/advertiser_accounts/10/campaigns這樣的有效鏈接,而不會在routes.rb – user1157352 2012-04-01 03:54:50
中重複太多的代碼,從而發現同樣的問題,您是否設法找到解決方案? – pduersteler 2013-02-18 21:34:52