簡體   English   中英

將Rails命名空間路由更改為個性化參數路由

[英]Change Rails namespaced route to personalized params route

TL; DR:我希望使用username621/posts/title-of-post而不是member/posts/1

將帖子id更改為帖子title非常容易,因為我使用了freindly_id gem生成了子彈。

但是,我很難路由到個性化的params路由,而不是當前的命名空間路由。 這是當前的路由:

namespace :member do
    resources :posts
end

我想將member名稱空間替換為用戶的username 因此,如果其用戶名是user123 ,則路由應為user123/posts/title-of-post

我認為這不是標准的Rails路由,並嘗試尋找類似的問題,但沒有結果。

對於更復雜的routes.rb ,添加path選項

namespace :member, path: ":user_id" do
  resources :posts
end

應該得到您想要的東西,例如http:// localhost:3000/621 / posts / 1

那么我們只需要在User and Post添加friendly_id即可將其變成類似http://localhost:3000/username621/posts/title-of-post

但是,您需要member_post_path(post)一下代碼庫中的諸如member_post_path(post)然后更改為member_post_path(post.user, post)

嘗試刪除namespace並添加path選項:

resources :posts, path: '/:username/posts/'

然后,如果您在控制器中訪問/username621/posts/title-of-post則會看到params[:username] = 'username621'

如果您使用/something/posts形式的其他路徑,請將其添加到該路由上方,否則它們將被:username捕獲。

暫無
暫無

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

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