0

我的应用缓存网页

在 pages#new 上,当您提交 URL(不带http://前缀)时,会创建一个页面并将您重定向到节目,例如pages/4ID 为 4

我正在尝试添加friendly_id,但在添加到我的之后遇到extend FriendlyIdfriendly_id :url问题Page问题

如果我提供“yahoo.com”,重定向会转到 page/yahoo.com。yahoo.com 被解释为{"id"=>"yahoo", "format"=>"com"}Rails 告诉我Couldn't find Page with id=yahoo

如果我提供“yahoo.com/index.html”,重定向会转到 page/yahoo.com/index.html 但我只是得到No route matches [GET] "/pages/yahoo.com/index.html"

你觉得我能怎么解决这个问题?

4

1 回答 1

0

rails route 中的句点表示格式(.json、.html、.csv 等)。为了让路由包含句点,您需要format在文件中将路由上的选项设置为 false config/routes.rb

这个答案是从 Rails3 中的Disable :.format routes借来的。

match '*pages' => 'pages#show', :format => false

或(足智多谋):

constraints :format => // do
  resources :pages
end

至于friendly_id,您是否运行迁移以将:slug列添加到Page模型中?

对于您的示例,friendly_id 采用该:url列,使其成为友好 URL,然后使用正确的:slug值更新您的 Page 实例。我怀疑friendly_id 可能会用下划线替换句点,但我没有验证这一点。

如果您不想使用该:slug列并且您已经有一个:url列,那么您需要将其定义为:

friendly_id :url, use: [:slugged], slug_column: :url

...具体来说,slug_column论点。

于 2013-05-20T16:27:24.147 回答