私のサイトには連絡フォームがあります。それはここでは、正常に動作コードです:あるコントローラから別のコントローラへのエラーメッセージの受け渡し
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
で私のホームページにお問い合わせフォームを埋め込みたいことを決めたので、私がそれに、部分的にリンクをフォームに立ち往生私のホームページの一番下に、インスタンス変数をマイページコントローラのインデックスアクションに追加します。私がフォームに正しく記入すると、電子メールが送信され、すべてが素晴らしいです。
フォーム提出が失敗した場合、実際にはpages_controllerの:indexアクションが好きなときは、contacts_controllerの新しいアクションがレンダリングされます。私はredirect_to "/"
を使ってこのアクションにリダイレクトできることを知っていますが、私はこのようにしてもフォーム上でerror_messagesを取得しません。
私はcontacts_controllerからpages_controllerにコントロールを転送し、失敗したフォームの送信にエラーメッセージを含めるにはどうすればよいですか?
おかげで、 – stephenmurdoch