【问题标题】:How to make Rails do not ignore trailing slashes in the routes?如何使 Rails 不会忽略路线中的斜杠?
【发布时间】:2011-06-26 21:08:39
【问题描述】:

例如,我在 routes.rb 中有死记硬背:

get 'companies/' => 'companies#index', :as => :companies

有一种方法可以生成带有斜杠的链接(例如“http://website.com/companies/”):

link_to 'Compaines', companies_path(:trailing_slash => true)

但如果默认情况下路由中存在斜杠,我希望 Rails 生成带有斜杠的链接:

link_to 'Companies', companies_path

现在它会生成类似“http://website.com/companies”的内容。如何解决?

【问题讨论】:

  • 原来的问题在这里:link。当我将现有网站移植到 Rails 时,我必须保持 URL 不变。
  • 您的意思是链接到同一个问题吗?
  • 这是类似的问题,但不一样。
  • 对不起,我的意思是这个问题:link
  • 类似这个,在这里回答stackoverflow.com/a/12364020/445023

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


【解决方案1】:

我不知道为什么你需要你的路线来理解有一个斜杠。是否将斜杠放在 Rails 上并不重要。它应该以任何方式响应。

如果你希望你的所有链接都有一个斜杠,你可以在你的 application.rb 中添加以下内容:

config.action_controller.default_url_options = { :trailing_slash => true }

这将使 Rails 生成的所有链接都有一个尾部斜杠。现在,如果您尝试拒绝任何不包含尾部斜杠的路由,那么我不确定该怎么做。

【讨论】:

  • 谢谢!这是最好的答案。
  • 路由表是否应该识别带有斜杠的路由的主要原因是它可能对 SEO 很重要。如果斜杠和非尾随斜杠版本都包含相同的内容并且每个都返回 200,请考虑更改此行为以减少重复内容并提高爬网效率。 webmasters.googleblog.com/2010/04/to-slash-or-not-to-slash.html
【解决方案2】:

如何实现一个名为 link_to_with_trailing_slash(name, path) 的帮助器?

def link_to_with_trailing_slash(name, path)
  link_to(name, "#{path}/"
end

【讨论】:

  • 谢谢,但如果在 routes.rb 的路由中定义了尾部斜杠,我希望 Rails 能够理解我想要什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
  • 2019-06-25
  • 2011-11-29
  • 2018-11-17
相关资源
最近更新 更多