Рельсы 3 перенаправить недостающий URL-адрес в корень - PullRequest
0 голосов
/ 20 января 2012

Я пытаюсь настроить некоторую полустатическую страницу в приложении rails 3, я создал контроллер Pages с некоторыми не отдыхающими действиями

class PagesController < ApplicationController

  def home
  end
  def about
  end
  def contact
  end
  def monday
  end
  def saturday
  end
  def sunday
  end

end

он хорошо показывает страницы в pages / monday и т. Д.или / понедельник и т. д. ... если я настроил маршруты как есть rails 3, удалив форму имени контроллера URL

Но мне было просто интересно, можно ли перенаправить отсутствующий URL в/.Согласно экзамену, я настроил / понедельник, но если кто-то играет с URL-адресом и вводом / вторником, он не попадет на страницу.Могу ли я перенаправить такого рода действия?

== РЕДАКТИРОВАТЬ ==

Я изменил свой код следующим образом:

  resources :pages, :path => '/' do
    collection do
      # # match 'tuesday' => redirect('/')
      # # match 'wednesday' => redirect('/')
      # # match 'friday' => redirect('/')
      %w{home monday thursday saturday sunday about contact resources}.each do |url|
        get url
      end
    end
 end
 match 'pages/*page' => :root

перезапись URL работает нормально, проходя черезмассив.Я попытался поместить дикую карточную строку внизу моих корневых файлов и внизу блока ресурсов: страницы.Но я получаю сообщение «Диспетчер действий шоу не может быть найден».

match 'pages/*page' => :root

Является ли это правильным местом для размещения отсутствующего URL, например / вторник, для создания страницы с ошибкой?также возможно ли ограничить это перенаправление только несколькими действиями, а не всеми пропущенными страницами?только во вторник, среду, пятницу ...

Ответы [ 2 ]

2 голосов
/ 21 января 2012

все заработало

Я изменил шаблон подстановки на

match '*page' => redirect('/')

вместо =>: root и оставил его внутри блока resources: pages.

2 голосов
/ 20 января 2012

Для этого вы можете использовать подстановочные маршруты.В конце вашего rout.rb просто добавьте строку:

match '*page' => :root

и пропущенные страницы будут перенаправлены в root с параметрами [: page], установленными на запрошенный URL.

Если выхотите перенаправить только недостающие страницы в контроллере Pages, сделайте это вместо

match 'pages/*page' => :root

Подробнее о маршрутизации можно прочитать здесь .Маршрутные символы описаны в конце статьи.

Надеюсь, это помогло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...