[英]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.