[英]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.