簡體   English   中英

如何從rails link_to中的URL中刪除操作和控制器

[英]how to remove action and controller from url in rails link_to

這是我的link_to

<%= link_to sub_category.name, controller: :posts, action: :product, id: "#{sub_category.slug}-#{sub_category.id}" %>

哪個指向URL

http://localhost:3000/posts/product/fifith-category-s-sub-category-2

我需要如下網址

http://localhost:3000/fifith-category-s-sub-category-2

我該怎么做。

我的route.rb

resources :posts
match ':controller(/:action(/:id))(.:format)', via: [:get,:post]

如果您希望路徑/:id與您的posts#product匹配,則您的路線中應包含以下內容:

resources :posts
match ':id', to: 'posts#product`, via: :get
match ':controller(/:action(/:id))(.:format)', via: [:get, :post]

@MarekLipka的建議是正確的,但是像這樣定義您的路由將占用您應用程序中的所有單級名稱空間,即,“ / anything”將默認路由到posts#product

我建議使用某種形式的標識符來確定應該去posts#product路線。 對您有用的取決於您為什么要這樣做。 幾個選項是:

使用簡短的名稱空間:

scope '/pp' do 
    get ':id', to: 'posts#product
end
# "/pp/:id" routes to 'posts/product'
# pp is a random short name I picked, it could be anything

# link
<%= link_to sub_category.name, "pp/#{sub_category.slug}-#{sub_category.id}" %> 

使用約束:

get ':id', to: 'posts#product`, constraints: { :id => /sub\-category/ }
# only id's with 'sub-cateogry' route to 'posts/product'

# link (assuming that sub_category.slug has 'sub-category' words in it)
<%= link_to sub_category.name, "#{sub_category.slug}-#{sub_category.id}" %>  

暫無
暫無

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

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