2011-02-04 4 views
0

私はindexという名前のerbファイルにフォームを持っています。簡単な例として:ページをRailsでリダイレクトしないようにする

<% form_for @foo, :url => {:action => 'bar'} do |f| %> 
    <%= f.submit "BAR!" %> 
<%end%> 

私はバーをクリックします。それは私が期待している動作を実行し、bar.erbファイルに私を転送して、期待される出力を表示します。しかし、私ができるようにしたいのは、生成されたHTMLをこのページから取り出し、それをインデックスページのdivのinnerHTMLに埋め込むことです。私は方法があると仮定しますが、私は尋ねなければなりません、これを達成する方法はありますか?役に立つ例がありますか?ありがとう!

+0

は、ajax呼び出しではうまくいくようです...あなたのコントローラでは、ajaxレスポンスでhtmlを置き換えるためにprototype_helperを使うよりも、remote_form_forを使いやすい方法です。あなたはgoogleのprototypehelper(またはjrubyを好むならjruby)のremote_form_for、rjsにする必要があります。 – andrea

+0

'remote_form_for'はRails 3にはないことを覚えておいてください。それはもっとクリーンなソリューションに置き換えられました。http://stackoverflow.com/questions/3890315/rails-3-undefined-method-remote-form-for – raidfive

答えて

0

あなたはそうのように更新するためのdivのIDを渡すことができる必要があります:コントローラで

<% remote_form_for @foo, :url => {:action => 'bar'}, :update => 'id-of-div-to-update' do |f| %> 
    <%= f.submit "BAR!" %> 
<%end%> 

def bar 
    # your code here 
    respond_to do |format| 
     format.html { redirect_to(xxx) } 
     format.js 
    end 
end 

Railsはbar.jsと意志という名前のテンプレートを探しますそれをレンダリングし、そのコンテンツをリダイレクトせずにブラウザに返します。

+0

まだページをリダイレクトしているようです。あなたがしなければならないのは、更新値を加えることだけですか、それ以上のことはありませんか? – keybored

+0

js要求を処理する例を含むように私の答えを編集しました。 –

関連する問題