【发布时间】:2011-11-25 17:44:42
【问题描述】:
我正在使用带有 Kaminari 的 Rails 3 应用程序进行分页。由于我的语言、搜索引擎优化和友好的 URL,我想更改我的 URL 的样子。但似乎我必须在友好的分页链接和/或显示正确的方法名称之间做出决定。但首先要做的是:
我有一个模型,称为“页面”,其中包含一些不能仅应用于一个模型或不包含任何模型的页面。以下是我的“routes.rb”的一个 sn-p:
match'/neugikeiten', :to => 'pages#neuigkeiten'
scope(:path_names => { :new => "neu", :edit => "bearbeiten", :delete => "loeschen", :index => "index", :page => "seite" }) do
resources :news, :path => "neuigkeiten"
end
如您所见,我将每个页面从页面匹配到一个名称,并将所有其他模型和方法(我仅使用一个作为示例)与范围匹配。所有这些工作都很好。但现在我必须添加 Kaminare 路线,其路线如下所示:
resources :pages do
get 'seite/:page', :action => :neuigkeiten, :on => :collection
end
所以,基本上我想要的是这样一个 URL:
/neuigkeiten/seite/2
2 只是一个例子,seite 是页面的德语单词。但我得到的是:
/pages/seite/2
所以,我得到的是模型名称,而不是我为这个单一页面定义的名称。我已经尝试过切换不同的代码,但要么我在 URL 中只有原始模型名称,要么我没有得到很好的分页 URL,如下所示:
/neuigkeiten?page=2
如果我尝试匹配没有这样资源的页面:
match'/tagebuch/seite/:page', :to => 'pages#tagebuch', :on => :collection
我收到以下错误。
can't use collection outside resources scope
在我看来应该有另一种方法来做到这一点,因为我不可能是唯一遇到这种问题的人。
很高兴得到任何帮助!
【问题讨论】:
-
只是一个建议,如果你遵守约定,它会让你的生活更轻松。您可以用简单的英语进行所有路由和对象命名,并在应用程序中管理一些语言环境
-
谢谢,但正如我所说,我想要德语的路线。即使我确实希望它们是英文的,我仍然会遇到问题,rails 给我的是模型名称,而不是 URL 中的页面名称。所以这不仅仅是语言的问题。
标签: ruby-on-rails-3 pagination routes url-routing kaminari