【问题标题】:SEO friendly url in railsRails 中的 SEO 友好网址
【发布时间】:2012-08-14 18:00:24
【问题描述】:

我正在为最后几分钟的假期建立一个网站。

现在我正忙于建立对 seo 友好的 url。每最后一分钟都有一个国家和一个城市。我想让网址看起来像这样的方式如下:

对于每个国家/地区所有最后几分钟的页面:
“domain.com/last-minutes-spain”

对于包含每个城市所有最后几分钟的页面:
“domain.com/last-minutes-spain/barcelona”

包含每个国家/地区所有最后几分钟的页面的 url 工作正常,但每个城市的页面的 url 不正常。

我的路线(我正在使用friendly_id gem):

match '/last-minutes-:id' => 'countries#show', :as => 'show_country'
match "/last-minutes-:country_id/:id" => 'city#show', :as => 'show_city'

countries_controller.rb:

def show
  @country = Country.find(params[:id])
end

国家/地区/show.html.erb:

<% @country.cities.each do |c| -%>
  <%= link_to(c.title, show_city_path(c.slug)) %><br />
<% end -%>

c.slug 用于friendly_id gem

显示城市路径(每个城市的最后几分钟)显示以下内容:
“domain.com/last-minutes-barcelona/spain”

所以城市和国家都在错误的地方。有谁知道怎么弄好?

【问题讨论】:

  • 您需要提供遇到问题的link_tourl_for 代码。
  • c 是什么? c.slug 是什么?如果您提供的信息非常有限,我们无法真正帮助您。
  • 我已经更新了我的问题。我希望这是足够的信息。
  • 城市的蛞蝓。在本例中为“巴塞罗那”。

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

你真正想做的是看看在你的模型中覆盖 to_param。

每当有任何调用尝试构建涉及模型的路径时,都会在模型实例上调用 to_param 方法以确定如何在 URL 中引用它。换句话说,您的路线中对应于 :id 的部分。如果您简单地覆盖此方法,则可以返回任何您想要的东西。最简单的方法是将整数 ID 保留为第一个值。像这样的:

def to_param
  return "#{self.id}-#{self.text_for_seo}"
end

就是这样。事实上,我昨天就为此录制了一个演练。很快,第一件事就是您正在尝试的内容。然后继续解释如何扩展它来支持加密的数据库 ID:http://www.youtube.com/watch?v=UW_s9ejrCsI

【讨论】:

    猜你喜欢
    • 2016-03-11
    • 2011-07-23
    • 2011-04-06
    • 2014-01-14
    • 2017-05-14
    • 2014-07-26
    • 2011-02-15
    • 2020-05-09
    • 2010-10-24
    相关资源
    最近更新 更多