0

我的数据库中有一个表,名为markets 我有一个与之对应的活动记录类,称为(所有事物)市场。

在我的 Haml 文件中,我有这样的东西

%h3=link_to market.name, market

一切都很完美...

但是当我用这个扩展类(继承)时

class EbayMarket < Market
end

现在我link_to正在寻找ebay_market路径。我没有,我也不想创建一个。我计划覆盖除显示以外的其他内容的类,因此我的 GUI 保持不变,我如何将数据发送到该市场(在本例中为 ebay)对于每个市场类型(Google、eBay、购物、Magneto 等)都不同。 )。

我想做的是覆盖在 link_to 上调用的方法,该方法将对象更改为路径。有人可以告诉我调用了什么方法,或者如何找到它。

4

2 回答 2

0

要使用通用的“市场”控制器,您需要为每个继承的模型设置一个额外的资源,同时指定要使用的控制器。以EbayMarket为例,您可以将以下行添加到您的routes.rb文件中:

resource :ebay_markets, :controller => "markets"

如果您希望避免一些重复,请参阅路由问题

于 2013-07-18T00:32:42.583 回答
0

好的.. 我希望能够使用尽可能少的代码为继承的类添加路由。我不想进入 routs 文件,因为我想限制当新开发人员加入并为新市场创建类时触及的文件数量。

我设法通过将以下内容添加到我的基类来动态创建溃败。现在继承类的创建者必须“什么都不做”。不需要添加任何代码来允许继承的类使用与超级类相同的控制器。

def self.add_rout()
    _table_name = self.table_name;
    _my_name = self.to_s.underscore; 
    _routes = Rails.application.routes
    _routes.disable_clear_and_finalize = true
    _routes.clear!
    Rails.application.routes_reloader.paths.each{ |path| load(path) }
    _routes.draw {resources _table_name, :as => _my_name    }
    ActiveSupport.on_load(:action_controller) { _routes.finalize! }
  ensure
    _routes.disable_clear_and_finalize = false
  end
  add_rout();
于 2013-07-22T00:53:38.123 回答