Rails 3.1 - Как правильно перенаправить с помощью пользовательских маршрутов
У меня есть модель Страницы с полем '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 ответ
В routes.rb
Вы можете добавить магические помощники.
get "/:customURL" => "pages#show", :as => :custom
Тогда в вашем контроллере
format.html { redirect_to custom_url(@page. customURL), notice: ... }
Теперь "/:customURL" должен быть последним в вашем routes.rb
, маршруты жадные, первый, который будет соответствовать, получит его. Так что, если у вас есть что-то вроде "/bob" и у вас есть контроллер, слушающий "/bob", контроллер получит это раньше, чем контроллер страниц.