Rails 3.1 - Как правильно перенаправить с помощью пользовательских маршрутов - PullRequest
0 голосов
/ 11 октября 2011

У меня есть модель Страницы с полем 'customURL'.Я могу сделать страницу # шоу в '/: customurl'.но так как я определил показ страниц таким образом в маршрутах, мое действие создания теперь перенаправляет в случае успеха на неправильный маршрут.Что мне следует изменить, чтобы наиболее корректно исправить перенаправление, чтобы оно указывало на '/: customurl' при сохранении?

контроллер:

def create
  @page = Page.new(params[:page])

  respond_to do |format|
    if @page.save
      format.html { redirect_to page_url, notice: 'Page was successfully created.' }
      format.json { render json: @page, status: :created, location: @page }
    else
      format.html { render action: "new" }
      format.json { render json: @page.errors, status: :unprocessable_entity }
    end
  end
end

маршруты:

resources :pages
...
get "/:customURL" => "pages#show"

Спасибо!

1 Ответ

1 голос
/ 11 октября 2011

В routes.rb вы можете добавить магических помощников.

get "/:customURL" => "pages#show", :as => :custom

Тогда в вашем контроллере

format.html { redirect_to custom_url(@page. customURL), notice: ... }

Теперь, "/: customURL" должен быть последним в вашем routes.rb, маршруты жадные, первый из найденных совпадений получитЭто.Так что если у вас есть что-то вроде «/ bob» и у вас есть контроллер, слушающий «/ bob», контроллер получит это раньше, чем контроллер страниц.

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