我有两个控制器Indent和InventoryStoreItem关系是'indent-'has_many:inventory_store_items'和inventory_store_item-'belongs_to:indent'。当我从indent-form选择下拉为store_item_id(即是item_name)时,它将获取商店项目属性ie是来自商店项目的unit_price,quantity,batch_no。当用户从选择框中选择下拉选项时,我尝试使用。而不是变化事件将通过ajax发射。但是js没有用。这是我的代码。
class IndentsController < ApplicationController
def index_indent
@store_items = InventoryStoreItem.find(params[:id])
@indents = Indent.all
@stores = InventoryStore.all
end
def load_item_data
@storeitem = InventoryStoreItem.find_by_id(params[:inventory_store_item_id]).present? InventoryStoreItem.find(params[:inventory_store_item_id]): InventoryStoreItem.unscoped.find_by_id(params[:inventory_store_item_id])
end
#Load Items data when an item is selected from dropdown list
'$('#select_inventory_store_item_id').on('change',function(){ var inventory_store_item_id = $('#select_inventory_store_item_id').val() $.ajax({ url: '/indents/load_item_data', type: 'GET', data: {'id' : inventory_store_item_id}, dataType: 'json' }).success(function(data) })'
<%= form_for @indent, url:{controller: 'indents',action:'create_indent'} do |c|%>
<div class="form-group">
<div class="col-md-3"><b>Indent No:</b></div>
<%=c.text_field :indent_no, placeholder: "Indent No", class: "form-control",style:"width:250px"%>
</div>
<div class="form-group">
<div class="col-md-3"><b>Expected Date:</b></div>
<%= c.date_field :expected_date, :value => Time.now.strftime('%Y-%m-%d'),class: "datepicker form-control",style:"width:250px" %>
</div>
<div class="form-group">
<div class="col-md-3"><b>Description</b></div>
<%=c.text_field :description, class: "form-control",style: 'width:350px;height:100px'%>
</div>
<h3>Indent Items</h3>
<div class="form-group">
<div class="col-md-3"><b>Required</b></div>
<%=c.text_field :required, placeholder: "Required", class: "form-control",style:"width:250px"%>
</div>
<div class="form-group">
<div class="col-md-3"><b>Pending</b></div>
<%=c.text_field :pending, placeholder: "Pending", class: "form-control",style:"width:250px"%>
</div>
<div class="form-group">
<div class="col-md-3"> <b>Store Item:</b></div>
<td class="col-3"> <%= c.select :inventory_store_item_id,InventoryStoreItem.all.collect{|b| [b.item_name,b.id]},{prompt:"select Item"}%></td>
</div>
<div class="form-group">
<div class="col-md-3"><b>Unit_price</b></div>
<%=text_field_tag :unit_price%>
</div>
<div class="form-group">
<div class="col-md-3"><b>Quantity</b></div>
<%=text_field_tag :quantity%>
</div>
<div class="form-group">
<div class="col-md-3"><b>Batch No</b></div>
<%=text_field_tag :batch_no%>
</div>
<div class="col-sm-4 col-sm-offset-4">
<div class="form-actions">
<%= c.submit 'Save', class: "btn btn-primary"%>
</div>
答案 0 :(得分:0)
data: {id: inventory_store_item_id}
它应该是data: {inventory_store_item_id: inventory_store_item_id}
。
您的load_item_data
操作仍然有误。语法为condition ? true : false
。
@storeitem = InventoryStoreItem.find_by_id(params[:inventory_store_item_id]).present? ? InventoryStoreItem.find(params[:inventory_store_item_id]) : InventoryStoreItem.unscoped.find_by_id(params[:inventory_store_item_id])