2012-04-27 9 views
1

私のindex.html.erbでは、私はindexアクションで:remote => trueRails:Ajaxリクエストの結果をビューに表示する

<%= form_tag locations_path, :method => :get, :remote=>true do %> 
    <p> 
    <%= text_field_tag :location, params[:location] %> 
    <%= submit_tag "Search Near", :name => nil %> 
    </p> 
<% end %> 

でアヤックス(と思う)を経由して送信するフォームを持っている、JSON

経由@locationsを返すように設定するように配置されています
def index 
    if params[:location].present? 
     @locations = Location.near(params[:location], 5 , :order => :distance) 

    else 
     @locations = Location.all 
    end 
    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @locations } 
    end 

    end 

今のところ@locationsだけが返されます。このdivの@locationsの結果をindex.html.erbにどのように取得できますか?

<div class="places"> </div> 

答えて

1

私は少し異なる方法をお勧めします。このトピックに関する

#def index 
#some code... 
respond_to do |format| 
    format.html 
    format.js 
end 


#index.js.erb 
$('.places').html("<%= escape_javascript(render :partial => "places_list") %>"); 


#_places_list.html.erb 
<%- @locations.each do |location| %> 
    <p><%= location.name %> </p> 
<%- end %> 

チュートリアル:そのページを参照するためのhttp://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/

0

あなたは

は、長い説明のために、この記事を参照してくださいJavaScriptでフォーム要素のajax:successイベントにバインドすることができます:スティーブ・シュワルツによってRails 3 Remote Links and Forms

は、あなたもこれを交換することがあります。

respond_to do |format| 
    format.html # new.html.erb 
    format.json { render json: @locations } 
end 

with this

respond_with @locations 

とあなたのコントローラの先頭に以下を追加:.jsの応答を使用して:

respond_to :json 
+0

おかげ それからそれは次のようになります。残念ながら、私はそれを働かせることはできません。コントローラのjsonで@locations変数をレンダリングする方法の問題点を確認できますか?私のアプリのセットアップのため、あなたが私に見せたページからコントローラーをコピーすることはできません... – Leahcim

+0

私はあなたの応答について私のコメントに提案を追加しました、FirebugまたはWebインスペクターで起こっているajaxリクエストを見ることができますか?コンソール? –

関連する問題