Jag*_*ari 6 ruby-on-rails nested-forms
我使用瑞安贝茨嵌套模型形式它工作正常,但
我有两个模型我,e存储和订单都有嵌套模型称为项目.
存储:
has_many :orders
has_many :items, :dependent => :destroy
accepts_nested_attributes_for :items
Run Code Online (Sandbox Code Playgroud)
订购:
belongs_to:storage
has_many :items, :dependent => :destroy
accepts_nested_attributes_for :items
Run Code Online (Sandbox Code Playgroud)
在订单视图中有存储选择框,
<%= f.select :storage_id,
Storage.all.map{|s| [s.store_no, s.id]} %>
Run Code Online (Sandbox Code Playgroud)
在选择存储编号时,相应的项目应出现在订单表格中,部分
可以让任何机构告诉我最佳方式.
谢谢,
首先,您需要观察输入字段才能看到它已更改.所以,假设:
...你可以把它放在你的storage.coffee.js文件中:
jQuery ->
$('select#storage').change ->
storage_id = $('option:selected',this).val()
$.get 'storages/' +storage_id+ '/orders.js'
Run Code Online (Sandbox Code Playgroud)
然后,假设Orders嵌套在存储下,如果您的OrdersController如下所示:
OrdersController < ApplicationController
def index
@storage = Storage.find(params[:storage_id])
@orders = @storage.orders
end
end
Run Code Online (Sandbox Code Playgroud)
......如果你有部分app/views/orders/_order.html.erb......
...如果您div#orders的页面上有一个您希望订单落入...
...然后你应该能够app/views/orders/index.js.erb像这样制作一个文件:
$('div#orders').html('<%= escape_javascript(render @orders) %>');
Run Code Online (Sandbox Code Playgroud)
这应该为属于给定存储的订单的每个实例呈现部分的副本,并将其附加到存储选择器之后的dom.
发生的事情是:当选择菜单被更改时,它会向给定存储的订单索引发出js GET请求.然后该请求将自动尝试提供index.js页面,控制器中设置的实例变量可用于该视图.该视图中的js将在插入任何插入的ruby之后执行,因此您可以使用rails函数(例如render @orders),然后将这些函数的输出注入到dom via中$('div#orders').html('your rendered orders will be inserted in here by rails').
显然你必须调整它以适应你的页面,我只是猜测你的页面的哪些元素被称为等,但这个基本概念应该工作正常.如果您有任何疑问,请告诉我.
| 归档时间: |
|
| 查看次数: |
1313 次 |
| 最近记录: |