繁体   English   中英

Ruby on Rails 3:AJAX调用不使用link_to刷新div

[英]Ruby on Rails 3: AJAX call not refreshing div with link_to

我是Ruby on Rails的新手,我正在研究O'Reilly Head First Rails一书中的一些示例应用程序。 在一个示例中,存在由三个部分组成的页面。 中间部分是项目列表。 在此部分下方有一个链接,当单击时,应该刷新包含该部分的div。 这本书是基于Rails 2.3运行的例子,我相信我正在使用Rails 3.1。 这是本书给我的例子:

routes.rb中:

map.connect '/flights/:flight_id/seats', :action=>'flight_seats', :controller=>'seats'

seats_controller.rb:

def flight_seats
    @flight = Flight.find(params[:flight_id])
    render :partial => "flights/seat_list", :locals => {:seats => @flight.seats}
end

show.html.erb:

<div id="seats">
    <%= render :partial=>"seat_list". :locals=>{:seats=>@flight.seats} %>
</div>

<$= link_to_remote("Refresh Seats", :url=>"/flights/#{@flight.id}/seats", method=>"get", :update=>"seats") %>

这个例子也使用了prototype.js,因为这就是Rails 2.3内置的内容.Rails 3将jQuery作为默认的JavaScript库。 (不确定这是否会产生很大的影响)

这是我到目前为止所拥有的。 这是正确获取部分内容,它只是在AJAX调用获得部分后不更新“seat”div。 我的代码:

routes.rb中:

match 'flights/:flight_id/seats' => 'seats#flights_seats'

seats_controller.rb:

def flights_seats
    @flight = Flight.find(params[:flight_id])

    render :partial => "flights/seat_list", :locals => { :seats => @flight.seats }
end

show.html.erb:

<div id="seats">
    <%= render :partial => 'seat_list', :locals => { :seats => @flight.seats } %>
</div>

<%= link_to "Refresh Seats", "/flights/#{@flight.id}/seats", :remote => true %>

知道为什么我的<div id="seats">不会刷新更新的部分? 我打赌有,但无论如何我会问,我的代码有问题吗?

如果你没有返回JSON数据,:remote => true选项有点奇怪。 但是,您可以将HTML包装在JSON对象中,这正是我通常所做的。 或者,如果您想要更接近现有代码的东西,这样的东西应该适合您:

<%= link_to "Refresh Seats", "/flights/#{@flight.id}/seats", :class => "refresh-seats" %>

在你的JavaScript的某个地方:

$(document).delegate(".refresh-seats", "click", function(e){
  e.preventDefault();
  $("#seats").load(this.href);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM