4

我有两个独立的引擎OfferPrices.

如何使用带有参数的哈希从 Offers 引擎视图中获取价格引擎控制器的 URL?

#config/routes.rb
Rails.application.routes.draw do
  mount Offers::Engine, at: "offers", as: "offers_routes"
  mount Prices::Engine, at: "prices", as: "prices_routes"
end

#offers/offers_controller.rb
class Offers::OffersController
  def show
  end
end

#prices/prices_controller.rb
class Prices::PricesController
  def index
  end
end

#views/offers/show.html.slim
= link_to "Prices", { action:"index", controller:"prices/prices" }

在这种情况下 link_to 引发错误:

*** ActionController::RoutingError Exception: No route matches {:controller=>"prices/prices"}

我知道offers_routes.offers_path助手,但在我的情况下,我应该使用带参数的哈希。

4

1 回答 1

3

use_route如果您使用引擎路线,则必须传递参数。

= link_to "Prices", { action:"index", controller:"prices/prices", use_route:"prices_routes" }

源码链接:https ://github.com/rails/rails/blob/v3.2.13/actionpack/lib/action_dispatch/routing/route_set.rb#L442

但这是更明确的解决方案:

= link_to "Prices", prices_routes.url_for(action:"index", controller:"prices/prices")
于 2013-08-20T15:38:37.073 回答