Разбивка на страницы в Rails 3 с Kaminari всегда "уничтожает" одну часть URL - PullRequest
0 голосов
/ 25 ноября 2011

Я использую приложение Rails 3 с Kaminari для разбиения на страницы.Из-за моего языка, SEO и дружественных URL-адресов, я хочу изменить свои URL-адреса.Но, похоже, мне приходится выбирать между дружественными ссылками на страницы и / или отображением правильных имен методовНо обо всем по порядку:

У меня есть модель, которая называется «страницы» и содержит несколько страниц, которые нельзя применить только к одной модели или не содержат никакой модели.Ниже приведен фрагмент моего "rout.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

Мне кажется, что должен быть другой способ сделать это, потому что я могу 'Это не единственная проблема такого рода.

Я рад любой помощи!

1 Ответ

0 голосов
/ 03 января 2012

Если кто-то заинтересован в решении, я сам нашел его. Это не идеально, но работает.

Мне пришлось установить дополнительный гем для локализации под названием "i18n_routing". Затем в моем маршрутах.rb я сделал:

localized do
  resources :news, :path => "neuigkeiten" do
    get 'seite/:page', :action => :index, :on => :collection
  end
end

Остальное делается в локализованном языковом файле (en.yml).

...