У меня есть контактная форма на моем сайте. Работает нормально, вот код:
class ContactsController < ApplicationController
def new
@contact = Contact.new(:id => 1)
end
def create
@contact = Contact.new(params[:contact])
if @contact.save
redirect_to('/', :notice => "Message sent ....")
else
flash.now[:error] = "Oops, something went wrong. Please try again"
render 'new'
end
end
end
#contact
= simple_form_for @contact, :url=>{:controller=>:contacts, :action=>:create}, :html=>{:method=>:post} do |f|
= render 'shared/error_messages', :target => @contact
= f.input :name
= f.input :email
= f.input :subject
= f.input :body, :as => :text, :input_html => { :rows => 5 }
= f.submit "Send"
Я решил, что хочу разместить контактную форму на своей домашней странице по адресу pages/index.html.haml
Таким образом, я приклеил форму частично, добавил ссылку на нее внизу моей домашней страницы и добавил переменную экземпляра в действие index в контроллере страниц. Если я правильно заполняю форму, письмо отправляется, и все отлично.
Но если отправка формы завершается неудачно, действие: new из contacts_controller отображается, когда я бы предпочел действие: index для pages_controller. Я знаю, что могу перенаправить на это действие, используя redirect_to "/"
, но я не получаю сообщения об ошибках в форме, когда я делаю это таким образом.
Как я могу передать управление из contacts_controller в pages_controller и включить сообщения об ошибках при неудачной отправке формы?