我正在使用带有 Kaminari 的 Rails 3 应用程序进行分页。由于我的语言、搜索引擎优化和友好的 URL,我想更改我的 URL 的样子。但似乎我必须在友好的分页链接和/或显示正确的方法名称之间做出决定。但首先要做的是:
我有一个模型,称为“页面”,其中包含一些不能仅应用于一个模型或不包含任何模型的页面。以下是我的“routes.rb”的片段:
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
在我看来,应该有另一种方法来做到这一点,因为我不能是唯一一个遇到这种问题的人。
我很高兴有任何帮助!