首先,你需要观察输入字段,看看它是否发生了变化。因此,假设:
- 存储选择具有“存储设备”
- 存储选择具有“存储装置”,其值为
的ID的ID ...你可以把这个在storage.coffee.js
文件:
jQuery ->
$('select#storage').change ->
storage_id = $('option:selected',this).val()
$.get 'storages/' +storage_id+ '/orders.js'
然后,假设订单会在存储嵌套,如果你的OrdersController看起来像这样:
OrdersController < ApplicationController
def index
@storage = Storage.find(params[:storage_id])
@orders = @storage.orders
end
end
...如果你有一个部分app/views/orders/_order.html.erb
...
...如果你有你的页面上div#orders
你想要的订单投进......
.. 。那么你应该能够作出app/views/orders/index.js.erb
文件,像这样:
$('div#orders').html('<%= escape_javascript(render @orders) %>');
这应该使局部的副本属于给定存储命令的每个实例并将其附加到后的DOM存储选择器。
发生了什么事情:当选择菜单被改变时,它会向给定存储的订单索引激发一个js GET请求。然后,该请求将自动尝试提供一个index.js页面,该控制器中设置的实例变量可用于该视图。这个视图中的js将在插入任何插入的ruby后执行,因此您可以使用rails函数(如render @orders
),然后通过$('div#orders').html('your rendered orders will be inserted in here by rails')
将其输出注入到dom中。
显然你必须调整这个以适应你的页面,我只是猜测你的页面的哪些元素被称为等等,但这个基本概念应该工作正常。如果您有任何问题,请告诉我。
感谢您的回答我已经使用rails 2.3.5和原型,并遵循这个概念。 – 2012-04-29 06:33:27