在 Rails 3 中创建 SEO 友好的 URL

发布于 2024-10-17 06:33:18 字数 291 浏览 4 评论 0原文

我目前的 URL 看起来像这样:

things?category_id=6&country_id=17

我希望 URL 看起来像这样:

/printer_cartridges/united_kingdom

Rails 3 中是否有一种方法,无需对路由器中的所有类别和国家/地区进行硬编码以获得我上面想要的 URL ,也许使用 find_by_name 或类似的东西?解决这个问题的最佳方法是什么?

I currently have URLs which look like this:

things?category_id=6&country_id=17

and I would like to have URLs which look like this:

/printer_cartridges/united_kingdom

Is there a way in Rails 3, without hard coding all of the categories and countries in the router to have the URLs as I would like above, perhaps using find_by_name or the such like? What is the best way to approach this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

下壹個目標 2024-10-24 06:33:18
match '/:category_slug/:country_slug', :to => 'things#index'

然后,您需要更新操作以使用 params[:category_slug] 和 params[:country_slug] 而不是 ids 查找所有内容。查看 slugged gem 来生成 slugs。

match '/:category_slug/:country_slug', :to => 'things#index'

Then you'll need to update your action to look up everything using params[:category_slug] and params[:country_slug] instead of the ids. Look at the slugged gem to generate slugs.

两人的回忆 2024-10-24 06:33:18

在您的类别模型中添加方法

def to_param
   "#{category_name.parameterize}/#{location_name.parameterize}"
end

,其中category_name 和location_name 是您输入存储名称的位置。

In your category model add the method

def to_param
   "#{category_name.parameterize}/#{location_name.parameterize}"
end

where category_name and location_name are where you input where you have have the names stored.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文