Ruby on rails Rails 3中的动态选择菜单

Ruby on rails Rails 3中的动态选择菜单,ruby-on-rails,ruby-on-rails-3,jquery,Ruby On Rails,Ruby On Rails 3,Jquery,我已经读了很多关于这方面的文章,甚至还看了《铁路史》,但似乎没有什么适合我的情况 如何使用Ajax请求的结果更新高度选择选项 <%= nested_form_for @estimate do |f| %> <%= f.label :date %><br /> <%= f.text_field :date %><br /> <%= f.label :job_name %><br /> <%=

我已经读了很多关于这方面的文章,甚至还看了《铁路史》,但似乎没有什么适合我的情况

如何使用Ajax请求的结果更新高度选择选项

<%= nested_form_for @estimate do |f| %>

  <%= f.label :date %><br />
  <%= f.text_field :date %><br />
  <%= f.label :job_name %><br />
  <%= f.text_field :job_name %><br />

  <%= f.fields_for :items do |builder| %>
    <%= builder.label :description %><br />
    <%= builder.text_field :description %><br />
    <%= builder.label :material %><br />
    <%= builder.select :material, @letters.map { |l| [l.material, l.material] }, {}, :id => "material_field" %><br />
    <%= builder.label :height %><br />
    <%= builder.select :height, @letters.map { |l| [l.height, l.height] }, {}, :id => "height_field" %><br />
    <%= builder.label :thickness %><br />
    <%= builder.select :thickness, @letters.map { |l| [l.thickness, l.thickness] }, {}, :id => "thickness_field" %><br />

    <%= builder.label :quantity %><br />
    <%= builder.text_field :quantity, :id => "quantity_field" %>
    <%= builder.link_to_remove "Remove this item" %>
  <% end %>

  <%= f.link_to_add "Add a item", :items %>
  <%= f.submit "Add item" %>


<% end %>

<script type="text/javascript">

$("#material_field").change(function() {
    //alert("hello")
    var material = $("#material_field").val();
    $.ajax({
      url: '/estimates/height_options?material=' + material, type: 'get', dataType: 'html',
      processData: false,
      success: function(data) {
        //Not sure what to do here with the returned data
      }
    });    
});

</script>


class EstimatesController < ApplicationController

  def height_options
    @heights = Letter.find_all_by_material(params[:material])
    if @heights.blank?
      render :text => "Record not found"
    else
      render :json => @heights
    end
  end

end

Ajax请求工作正常,并返回一个适当字母的数组。我该怎么办?我非常感谢任何人在这方面的帮助。

在生成的html代码中,您有如下内容:

<select id="item_height">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="5">5</option>
  <option value="10">10</option>
  <option value="15">15</option>
  <option value="25">25</option>
</select>
您可以通过jQuery方法将其他选项标记插入select。我认为类似的方法可以奏效:

$("#item_height").html($("#item_height").html() + "<option value="50">50</option>")

或者更聪明的东西,但这是我的想法。

我如何循环处理从Ajax调用返回的数据?有两个选项:返回的数据正是您想要插入的html代码,不是非常灵活但很简单,或者您循环处理数据。如果要进行此循环,您的数据必须是json数组到_json方法。您可以使用以下jquery方法:。