2011-08-03 5 views
1

Railsで標準のajaxライブラリを使用しています。私は、ページをリフレッシュすると要素が正常に更新されるため、イベントが発生していることがわかります。ここで私はajaxを開始する私のビューコードです。RoR ajaxがページを更新しないpage.replace_html

<% form_tag('switch_car', :method => :put, :remote => true) do %> 
<div class="field"> 
    <label>Car Name:</label> 
    <%= select_tag(:id, options_from_collection_for_select(active_cars, "id", "name"))%><%= submit_tag "Switch Car" %> 
</div> 

<% end %> 

はここにここに更新する必要がありますビューの部分である私のupdate.js.rjs

page.replace_html('entries', render(@miles)) 

です。

<div id="entries"> 
     <%= render(@miles)%> 
    </div> 

ここは私のコントローラコードです。

 def update 
    respond_to do |format| 
     if params[:id] 
     session[:car_info_id] = params[:id] 
     format.html {redirect_to entry_url} 
     format.js 
     else 
     redirect_to switch_car_path 
     end 
    end 
    end 

DOMを変更していない理由がわからないので、更新プログラムはページを更新せずに表示されますか?私はそれがjavascriptを実行するが、ビューは更新されないことをサーバーコンソールで見ることができます。

コンソール出力:

Started POST "/switch_car" for 127.0.0.1 at 2011-08-03 17:32:02 -0400 
    Processing by ActiveCarController#update as JS 
    Parameters: {"utf8"=>"Γ£ô", "authenticity_token"=>"PEbdqAoiik37lcoP4+v+dakpYxdpMkSm7Ub8eZpdF9I=", "id"=>"10", "commit"=>"Switch Car", "_" 
=>""} 
Rendered active_car/update.html.erb (0.0ms) 
Completed 200 OK in 16ms (Views: 16.0ms | ActiveRecord: 0.0ms) 
+0

レンダリングされていないupdate.js.rjsレンダリングされたactive_car/update.html.erb(0.0ms)。リクエストフォーマットはhtml(jsではない)です: 'Started POST"/switch_car "' – Hck

答えて

0

問題すべてに沿って私が間違ったディレクトリに私のupdate.js.rjsを有していました。データを提供するビューディレクトリではなく、アクションが発生するビューディレクトリに配置する必要があります。最終的には、update.js.rjsが決してレンダリングされなかったことが、端末出力の上に表示されることに気づいた。それはupdate.js.rjsを見つけることができなかったので、renered update.html.erbと言います。だから誰か他の人がこの問題を抱えているなら、あなたのupdate.js.rjsがレンダリングされていることを確認してください。

+1

詳細を教えてください。 – Shobhit

関連する問題