我的应用程序缓存网页
在页面#new上,当您提交网址(没有http://
前缀)时,会创建一个页面并重定向到该节目,例如pages/4
,其中4是ID
我正在尝试添加friendly_id但在将extend FriendlyId
和friendly_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"
您认为我怎么能解决这个问题?
答案 0 :(得分:0)
rails路由中的句点表示格式(.json,.html,.csv等)。要使路径包含句点,您需要在format
文件中将路径上的config/routes.rb
选项设置为false。
这个答案来自Disable :.format routes in rails3。
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
参数。