尝试将 :id 添加到 Rails 应用程序中的参数末尾
Trying to add :id to the end of paramter in Rails app
我正在尝试修改我的应用程序中的 url 参数。我目前正在使用 friendly_id 使 url 包含标题而不是 ID。但是,如果可能的话,我想在 url 中的标题后添加 id。
示例:
当前:app.com/categories/aircraft/listings/listing-title/
要求:app.com/categories/aircraft/listings/listing-title/listing-id
这是我现在的嵌套路线
resources :categories do
resources :listings, only: [:index, :show]
end
根据文档,我可以覆盖命名助手并更改路径,但我似乎只能覆盖 url 的列表部分,而不是实际上只是在参数末尾添加一个 :id如果有两个具有相同标题的列表,请保持其唯一性。
https://guides.rubyonrails.org/routing.html#overriding-the-named-helpers
我认为 friendly_id 添加随机唯一字符以停止重复 url 的做法很丑陋,所以我正在考虑另一种解决方法。
添加以下路由可以强制执行。但是有没有办法在不影响页面上已有的按钮链接的情况下,将路由添加到资源块中以仅显示页面?
get 'categories/:catgeory_id/listings/:id/:aircraft_id', to: 'listings#show'
已编辑:
我已经采纳了使用 slug_candidates
的建议
def slug_candidates
[
:title,
[:title, self.id]
]
end
我也尝试过只使用 :id。
我收到的是带有 title/UUID 而不是 title/listing_id 的 url。知道这与在 friendly_id gem 的初始设置中具有唯一字段的迁移有关吗?
您的解决方案有点违背友好 ID 的目的(不必在 URL 中使用 ID)。尝试改用 candidates
。参考:http://norman.github.io/friendly_id/file.Guide.html#Candidates
def slug_candidates
[
:title,
[:title, :id]
]
end
这将使用 title-id
而不是 title
仅当 title
恰好重复 - 并不总是像你的解决方案。
我正在尝试修改我的应用程序中的 url 参数。我目前正在使用 friendly_id 使 url 包含标题而不是 ID。但是,如果可能的话,我想在 url 中的标题后添加 id。
示例:
当前:app.com/categories/aircraft/listings/listing-title/
要求:app.com/categories/aircraft/listings/listing-title/listing-id
这是我现在的嵌套路线
resources :categories do
resources :listings, only: [:index, :show]
end
根据文档,我可以覆盖命名助手并更改路径,但我似乎只能覆盖 url 的列表部分,而不是实际上只是在参数末尾添加一个 :id如果有两个具有相同标题的列表,请保持其唯一性。
https://guides.rubyonrails.org/routing.html#overriding-the-named-helpers
我认为 friendly_id 添加随机唯一字符以停止重复 url 的做法很丑陋,所以我正在考虑另一种解决方法。
添加以下路由可以强制执行。但是有没有办法在不影响页面上已有的按钮链接的情况下,将路由添加到资源块中以仅显示页面?
get 'categories/:catgeory_id/listings/:id/:aircraft_id', to: 'listings#show'
已编辑:
我已经采纳了使用 slug_candidates
的建议 def slug_candidates
[
:title,
[:title, self.id]
]
end
我也尝试过只使用 :id。
我收到的是带有 title/UUID 而不是 title/listing_id 的 url。知道这与在 friendly_id gem 的初始设置中具有唯一字段的迁移有关吗?
您的解决方案有点违背友好 ID 的目的(不必在 URL 中使用 ID)。尝试改用 candidates
。参考:http://norman.github.io/friendly_id/file.Guide.html#Candidates
def slug_candidates
[
:title,
[:title, :id]
]
end
这将使用 title-id
而不是 title
仅当 title
恰好重复 - 并不总是像你的解决方案。