0

に連絡フォームがありmysite.com/messages/newます。このフォームを自分のサイトのすべてのページで利用できるようにするというアイデアが気に入っています。小さな問題が1つあります。

ホームページからにPOSTリクエストを送信し、/messages検証に失敗した場合、messages/new.html.erb(エラーメッセージとともに)レンダリングされます。私はこれで生きることができますが、呼び出し元のアクションのテンプレートをレンダリングしたいと思います(つまりhome/index.html.erb)。

現在、メッセージコントローラーには次のものがあります。

def create
  @message = Message.new(params[:message])
  if @message.valid?
    MessageMailer.message_us(@message).deliver
    flash[:success] = "xthnxbai"
    redirect_to root_url
  else
    # this is where I want to change things
    render :new
  end
end 

私は以下を使用してみました:

else
  render :template => "#{request.controller}/#{request.action}"

しかし、これは次のようになります。

NoMethodError (undefined method `controller' for #<ActionDispatch::Request:0xa113168>):

私のMessagesControllerへのPOSTリクエストを開始したコントローラーとアクションをレンダリングするようにrailsに指示することは可能ですか?

4

1 に答える 1

2

この場合、AJAX を介してフォームを送信すると、ベーコンを節約できると思います。特にRailsで簡単にできることを考えると。

于 2013-01-16T14:58:32.533 に答える