首先,你需要觀察輸入字段,看看它是否發生了變化。因此,假設:
- 存儲選擇具有「存儲設備」
- 存儲選擇具有「存儲裝置」,其值爲
的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