我在我的模型文件中创建了一个单表继承模型,并且在路由方面遇到了困难。当我在资源中使用 :as 时,它会重命名我的命名路径。
模型文件:
class Account < ActiveRecord::Base
belongs_to :user
end
class AdvertiserAccount < Account
end
class PublisherAccount < Account
end
路由.rb
resources :advertiser_accounts, :as => "accounts" do
resources :campaigns
end
我在路由中使用 :as,因为它是单表继承,我想传递 account_id 而不是advertisingr_account_id。我的链接是http://127.0.0.1:3000/advertiser_accounts/1/campaigns
/advertiser_accounts/:account_id/campaigns/:id(.:format)
但是,使用 :as 将我的命名路径从advertisingr_account_campaigns 重命名为account_campaigns。我的路线看起来像
account_campaigns GET /advertiser_accounts/:account_id/campaigns(.:format) campaigns#index
所以当我使用 form_for 创建一个新项目时,我会得到“未定义的方法 `advertiser_account_campaigns_path'”
编辑:当前被黑的解决方案
我正在使用的一种破解方法是复制路由文件中的代码。有人有建议吗?
resources :advertiser_accounts, :as => "accounts" do
resources :campaigns
end
resources :advertiser_accounts do
resources :campaigns
end