簡體   English   中英

Spree等引擎中的Rails URL和路徑幫助器

[英]Rails URL and Path Helpers in Engines Like Spree

我正在嘗試在Rails 4 Engine視圖中使用一些URL和/或路徑幫助程序,例如resource_url或resource_path。 這些引擎的配置與那里的典型--mountable教程略有不同。 實際上,它們沒有Spree :: ENGINE_NAME命名空間,更類似於Spree的操作方式。

像Spree的體系結構一樣,我正在嘗試創建其他引擎所依賴的核心引擎。 例如,我的后端引擎的routes.rb文件如下所示:

Core::Engine.add_routes do

    # Check to see if the request comes in on a subdomain
    # The Subdomains class passed into constraints()
    # is a class defined in lib/subdomain.rb
    constraints(Subdomain) do
      match '/manage' => "manage#index", :via => [:get]
    end

end

后端引擎內部的視圖中,我希望能夠使用一些URL /路徑助手來執行以下操作:

<%= link_to manage_path, manage_path %>

這不起作用,因為我正在核心引擎上繪制路線。 所以,我必須使用

<%= link_to core_engine.manage_path, core_engine.manage_path %>

狂歡以某種方式解決了這個問題,但我不確定如何解決。 例如,在backend/app/views/spree/admin/products/index.html.erb

<%= link_to product.try(:name), edit_admin_product_path(product) %>

注意, edit_admin_product_path ,但是沒有提及實際上是在核心引擎上繪制的。

有任何想法嗎?

我們通過使用add_routes繪制核心引擎上的所有路由來解決這個add_routes ,存在這個原因是因為它很長的切線,所以我不add_routes在這里討論。 但是,這種工作必不可少。

Core::Engineisolate_namespace方法將所有內容都isolate_namespacespree名稱空間。 如果您位於在Spree::Core::Engine路線下繪制的控制器內,並且要引用也在該路線下繪制的另一個控制器的路線,則可以不使用該spree. 路由助手上的前綴。

如果要路由到其他引擎,則需要具有前綴: main_app. 管他呢。

引擎指南》對此進行了更詳細的解釋,我建議您閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM