在轨道上的 Ruby 文本字段中动态显示数据

dynamically displaying data in text field ruby on rails

本文关键字:字段 动态显示 数据 文本 Ruby 轨道      更新时间:2023-09-26

大家好,我正在尝试在这里进行动态选择。 一旦我选择客户,他在账单中的总价值应该会出现并显示在文本字段标签中。

视图

  jQuery(document).ready(function(){
   jQuery(".customerid").bind("change", function() { 
      var data = {
        customer_id: jQuery(".customerid :selected").val()  
      }
      jQuery.ajax({
        url: "get_cust_bill",
        type: 'GET',
        dataType: 'script',
        data: data
      });
    });
  });
</script>

 <div class ="customerid"><%= f.label :customer_id %>
    <%= f.collection_select :customer_id, Customer.all, :id, :name, options ={:prompt => "-Select a Customer"}, :class => "state", :style=>'width:210px;'%></div><br />
     <div class ="customerbill">
      <%= f.label :total_value, "Total Value" %>
  <%= render :partial => "customerbill" %>

js.erb 文件

jQuery('.customerbill').html("<%= escape_javascript(render :partial => 'customerbill') %>");

客户账单部分

<% options = []
  options = @cust_bill.total_value if @cust_bill.present? %>
<%= text_field_tag "total_value", options %>

在康托勒

def get_cust_bill
    @cust_bill = CustomerBill.find_all_by_customer_id(params[:customer_id]) if params[:customer_id]
  end

我觉得问题出在部分,我调用options的方式,所以任何人都可以指导我如何在文本字段中获取值???提前感谢。

我了解,total_value文本字段不显示任何内容。你能尝试输出选项的值并检查它是否总是有一个值吗?我建议您查看text_field_tag的文档。基本上,它接受三个这样的变量:

text_field_tag(name, value = nil, options = {})

我正在使用getJSON方法....我觉得可以在这里使用。希望以下工作。

jQuery(document).ready(function()
    {
    jQuery(".customerid select").bind("change", function() {
          var data = {
            product_id: jQuery(this).val()  
          }
          jQuery.getJSON(
             "/controller_name/get_cust_bill",
            data,
            function(data){
          var result = "";
          res = parseFloat(a[1]);
           jQuery('.price input').val(res);
          });            
            });
        });

控制器

def get_cust_bill
    @cust_bill = CustomerBill.find_all_by_customer_id(params[:customer_id]).map{|p| [p.price]} if params[:customer_id]
respond_to do |format|
      format.json { render json: @cust_bill }
    end
  end

所以不需要调用js.erb部分你可以简单地拥有

<div class = "price"><%= f.input :price, :label => 'Price', :input_html => { :size => 20} %></div><br/>

万事如意:)