Какой лучший способ направить статический контроллер в рельсах?

StackOverflow https://stackoverflow.com/questions/2573129

Вопрос

У меня есть Static_Controller, который отвечает за все статические страницы на сайте и работает следующим образом в маршрутах .rb:

map.connect ':id', :controller => 'static', :action => 'show'

У меня есть статическая страница призвана к тому, что среди прочего информации имеет контактную форму. В настоящее время у меня есть контакты_Controller, который отвечает за вставку контактной информации в базу данных. Внутри мои маршрута.

map.resources :contacts

Моя контактная форма (упрощенная) выглядит так:

<% form_for @contact do |f| %>
    <p class="errors"><%= f.error_messages %></p>  

    <p>
        <%= f.label :first_name %>
        <%= f.text_field :first_name %>
    </p>


    <p class="buttons"><%= f.submit %></p>
<% end %>

Что в свою очередь представляет собой создать действие моих контактов_Controller. Мое создание действий выглядит так:

def create
    @contact = Contact.new(params[:contact])
    if @contact.save
      flash[:notice] = "Email delivered successfully."
    end
    redirect_to "about"
end

Проблема в том, что то, что когда я перенаправляю обратно к моей странице, ошибка_messages для формы, потерявшись (поскольку ERROR_Messages для формы существует только для одного запроса, и этот запрос заканчивается при перенаправлении). Как бы я пошел в сохранение ошибок_messages и все еще связывая пользователей обратно в статический URL? Будет иметь достаточную сессию / вспышку (если да, то какой код я использовал для прохождения сообщений об ошибках) или я собираюсь по всей целым?

Спасибо!

Это было полезно?

Решение

Я думаю, что может происходить, вам нужно сделать, а не перенаправить. Redirect завершает запрос и говорит клиенту сделать новый запрос на другой адрес. Это потеряет ваши ошибки. Если ваша попытка сохранения не может выполнить запрос, сделав действие снова с отображаемыми ошибками.

def create
@contact = Contact.new(params[:contact])
if @contact.save
  flash[:notice] = "Email delivered successfully."
  redirect_to @contact #make a new request for the address of the new record or some other address if you want
else
  render :action => "new" #complete the request by rendering the new action with the @contact variable that was just created (including the @errors).
end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top