我有一个汽车经销商和汽车项目show.html
我在页面左侧有照片库,右侧有车辆信息。车辆信息代码位于部分名为_vehicle_info
且图库位于_car_gallery
中,这看起来像这样:
<div id="column-left">
<%= render :partial => "car_gallery" %>
</div>
<div id="column-right">
<%= render :partial => "vehicle_info" %>
</div>
在car_gallery
我只能看到12张汽车照片。
问题:
我想要做的是在car_gallery
div附近设置一个链接,当用户点击它时,左侧的部分vehicle_info
将被部分car_gallery_all
替换(这部分包含该车的所有照片,不限于12)。
有没有简短的方法来做到这一点?请帮忙。
答案 0 :(得分:6)
由于缺少代表而进行编辑:
这适用于rails 3.1,不确定3.0或以下..
另外,davidb的答案是,如果我理解正确的话,加载所有的图像,无论用户是否想要查看它们 - 这个解决方案只会在用户点击时加载它们查看它们的链接..
............................................... ...............................
def all_car_photos
...
respond_to do |format|
format.js
end
end
<div id="column-left">
<%= render :partial => "car_gallery" %>
</div>
<div id="column-right">
<%= render :partial => "vehicle_info" %>
</div>
<%= link_to "Show All Photos", path_to_controller_action(@car), { :method => :get, :remote => true} %>
$('#column-right').html("<%= escape_javascript(render "car_gallery_all") %>");
好的,视图包含指向all_car_photos控制器动作的link_to方法。这里的关键是link_to包含:remote =&gt; true - 这使用Rails AJAX功能中的烘焙提交请求。
控制器动作执行它需要做的事情,但是用.js视图响应 - all_car_photos.js.erb - 这包含一行jQuery,它将用'car_gallery_all替换'column-right'div的内容'偏..
现在已经很晚了,但这种设置应该有效..
答案 1 :(得分:3)
添加链接并为其提供ID。你使用“#”因为它没有任何有效的链接。
<%= link_to "my link text", "#", :id => "replace_vehicle_info" %>
然后你向你的public/javascript/application.js
添加一些jQuery(除了你使用rails 3而不是3.1,因为你的问题被标记了),以替换该div的内容。
$("#replace_vehicle_info").click(function() {
$("#vehicle_info").replaceWith(<your html here>)
})