Rails的FriendlyId与URL中的网址(Rails FriendlyId with URL

2019-11-02 03:41发布

我的应用程序缓存的网页

在新的#页,当你提交一个URL(不含http://前缀)页面被创建并您重定向到展会上,像pages/4其中4是ID

我想补充friendly_id但加入之后我遇到了问题, extend FriendlyIdfriendly_id :url到我的Page模式

如果我提供“yahoo.com”,重定向去页/ yahoo.com。 yahoo.com被解释为{"id"=>"yahoo", "format"=>"com"}和导轨告诉我Couldn't find Page with id=yahoo

如果我提供“yahoo.com/index.html”,重定向去页/ yahoo.com / index.html的,但当时我只是得到No route matches [GET] "/pages/yahoo.com/index.html"

你怎么认为我可以解决这个问题?

Answer 1:

在一个轨道路径A期间表示格式(上传.json和.html,的.csv等)。 为了使路线包含一个时期,你需要设置format在假的路径选择上config/routes.rb文件。

这个答案是从借来的禁用:.format在Rails3中的路线 。

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

或(机智):

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

至于friendly_id ,你执行的迁移,添加:slug列到Page模式?

对于你的榜样,friendly_id采取:url列,使其成为一个友好的URL,然后用正确的更新您的Page实例:slug值。 我怀疑friendly_id将有可能取代用下划线时期,但我没有验证这一点。

如果你不想使用:slug列,您已经有了一个:url列,那么你需要将它定义为这样的:

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

...具体而言, slug_column说法。



文章来源: Rails FriendlyId with URLs within URL