まず、入力フィールドが変更されていることを確認する必要があります。したがって、次のように仮定します。
- Storage セレクターの ID は「storage」です
- ストレージセレクターは、値として「ストレージ」の ID を持っています
...これをファイルに入れることができstorage.coffee.js
ます:
jQuery ->
$('select#storage').change ->
storage_id = $('option:selected',this).val()
$.get 'storages/' +storage_id+ '/orders.js'
次に、 OrdersController が次のように見える場合、 Orders が storage の下にネストされていると仮定します。
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 は、補間されたルビが挿入された後に実行されるため、レール関数 ( などrender @orders
) を使用でき、それらの出力は を介して dom に注入され$('div#orders').html('your rendered orders will be inserted in here by rails')
ます。
明らかに、ページに合わせてこれを微調整する必要があります。ページのどの要素が呼び出されるかなどについて推測しているだけですが、この基本的な概念はうまく機能するはずです。ご不明な点がございましたら、お知らせください。