RoR ajax не обновляет страницу с помощью page.replace_html - PullRequest
1 голос
/ 04 августа 2011

Я использую стандартные библиотеки ajax с Rails.Я знаю, что событие происходит, потому что, если я обновляю страницу, элемент обновляется нормально.Вот мой код представления, с которого я запускаю ajax.

    <% 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)

1 Ответ

0 голосов
/ 04 августа 2011

Проблема все время заключалась в том, что мой файл update.js.rjs находился не в том каталоге. Вы должны иметь его в каталоге представления, где действие происходит не в каталоге представления, который предоставляет данные. В конечном итоге я понял, что update.js.rjs никогда не отображался, см. Вывод терминала выше. Это говорит renered update.html.erb, потому что это не могло найти update.js.rjs. Так что, если у кого-то еще есть эта проблема, убедитесь, что ваш update.js.rjs рендерится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...