我正在使用Rails 3应用程序和Kaminari进行分页。由于我的语言,搜索引擎优化和友好的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
在我看来应该有另一种方法来做到这一点,因为我不可能是唯一一个有这种问题的方法。
我很高兴有任何帮助!
答案 0 :(得分:0)
如果有人对解决方案感兴趣,我自己找到了一个。它并不完美,但它确实有效。
我不得不为名为“i18n_routing”的本地化安装额外的gem。然后在我的routes.rb中我做了:
localized do
resources :news, :path => "neuigkeiten" do
get 'seite/:page', :action => :index, :on => :collection
end
end
其余部分在本地化语言文件(en.yml)中完成。