4

我试过在 application.rb 中添加这个

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

以及:trailing_slash => true在 routes.rb 中

match '/download', to: 'welcome#download', via: 'get', :trailing_slash => true

但似乎两者都不起作用。我搜索了 rails 4.0 文档,但找不到相关信息。我在这里想念什么?

更新:

我试过添加

Rails.application.default_url_options[:trailing_slash] = true

filter_parameter_logging.rb因为这是整个项目中我能找到的唯一地方,Rails.application.*但它也不起作用。我在这些版本中找到了这条线,我使用的是 4.0.4。我在错误的地方添加了这个吗?在重新检查之前我确实重新启动了服务器。

很抱歉这个简单的问题,但从我收集的内容来看trailing_slash,如果不是主要的,也不应该反映在浏览器 url 中?因为这是我需要的,与 historyjs 一起使用。

4

4 回答 4

9

我觉得你有:trailing_slash => true错的意思。

它所做的只是将 / 添加到路径助手的末尾。不涉及重定向。

您的路线仍然会响应带有和不带有斜杠的情况。

如果你想将所有非trailing_slashuri重定向/download/download/使用 nginx http 服务器,你可以这样做:

rewrite ^([^.\?]*[^/])$ $1/ permanent;

您仍然希望将 添加:trailing_slash => true到您的路线中,以便您的路径/url 帮助程序生成正确的 uri(因此用户不需要重定向)。

于 2014-04-17T08:43:58.300 回答
2

Trailing_slash是指/名称 like page/not like之后的一个/page

你给你的路线错误。

将其更改为

match 'download/', to: 'welcome#download', via: 'get', :trailing_slash => true

还有其他方法可以通过trailing_slash => true直接向您的link_to助手提供选项来实现此目的。

link_to 'Downloads', downloads_path(:trailing_slash => true)

虽然这在Rails 3中有效,但不确定Rails 4。

有关更多详细信息,请参阅此SO

于 2014-04-16T05:13:55.950 回答
1

我正在rails 4.0.2为我使用它正在工作

路线.rb

       get 'admin/update_price_qty' => 'admin#update_price_qty', :trailing_slash => true,:as  => "price"

在控制台中:-

     irb(main):003:0* app.price_path
     => "/admin/update_price_qty/"

路线.rb

   match '/download', to: 'welcome#index', via: 'get', :trailing_slash => true,:as => "welcome_price"

在控制台中:-

   `irb(main):002:0> app.welcome_price_path
    => "/download/"`

但我尝试在 application.rb 中添加它

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

不工作。

于 2014-04-16T05:10:28.350 回答
0

您可以将此行添加到config/application.rb

config.action_controller.default_url_options = { trailing_slash: true }

如果这样做,当您在控制器或助手中调用 Rails 路径助手时,生成的路径将/在末尾有一个:

class ApplicationController
  def index
    download_path # returns "/download/"
  end
end

module PathHelper
  def path
    download_path # returns "/download/"
  end
end

如果您需要在控制器和助手之外使用路径助手,则需要include Rails.application.routes.url_helpers,但显然,这忽略了上面的 trailing_slash 配置:

class SomeClass
  include Rails.application.routes.url_helpers

  def path
    download_path # returns "/download"
  end
end

在这种情况下,您应该添加{ trailing_slash: true }作为参数:

class SomeClass
  include Rails.application.routes.url_helpers

  def path
    download_path(trailing_slash: true) # returns "/download/"
  end
end
于 2015-01-06T20:09:41.090 回答