RoR ajax没有使用page.replace_html更新页面

时间:2011-08-03 21:33:53

标签: ajax ruby-on-rails-3

我正在使用带有Rails的标准ajax库。我知道事件正在发生,因为如果我刷新页面元素更新正常。这是我启动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 :(得分:0)

问题一直是我将update.js.rjs放在错误的目录中。您需要在视图目录中将操作发生在不提供数据的视图目录中。最后让我感到高兴的是,update.js.rjs从未被渲染到上面的终端输出。它说renered update.html.erb,因为它无法找到update.js.rjs。因此,如果其他人有此问题,请确保您的update.js.rjs正在呈现。