gpt4 book ai didi

ruby-on-rails - 知道@vendor.name 后如何使 Ruby on Rails 中的 URL 对 SEO 友好?

转载 作者:数据小太阳 更新时间:2023-10-29 06:43:34 25 4
gpt4 key购买 nike

我的应用程序在 RoR 中

我有一个名为 showsummary 的操作/ View ,其中 ID 已传递到 URL,并且 Controller 使用它来实例化 @vendor,其中 @vendor.name 是公司的名称。

我希望 URL 是 showsummary/1/而不是在 URL 中包含/vendor-name。

我该怎么做?

最佳答案

所有这些解决方案都使用 find_by_name,这肯定需要在该列上有一个索引并且要求它们是唯一的。我们使用的一个更好的解决方案是在供应商名称前加上其 ID,但牺牲了一点美观。这意味着您不必在名称列上有索引和/或要求唯一性。

供应商.rb

def to_param
normalized_name = name.gsub(' ', '-').gsub(/[^a-zA-Z0-9\_\-\.]/, '')
"#{self.id}-#{normalized_name}"
end

所以这会给你这样的 URL

/1-Acme

/19-西夫韦

等等

然后在你的表演 Action 中你仍然可以使用

Vendor.find(params[:id])

因为该方法将在其参数上隐式调用 .to_i,并且在这样的字符串上调用 to_i 将始终返回数字前缀并删除剩余的文本——全部在那一点上起毛。

以上假设您使用的是默认路由 /:controller/:action/:id,这将使您的 URL 看起来像

/vendors/show/1-Acme

但是如果你想让他们只是看

/1-Acme

然后有一条像这样的路线

map.show_vendor '/:id', :controller => 'vendors', :action => 'show'

这意味着它几乎会吞下很多您可能不想要的 URL。采取警告。

关于ruby-on-rails - 知道@vendor.name 后如何使 Ruby on Rails 中的 URL 对 SEO 友好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/723765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com