Ruby on rails Rails 3中的动态选择菜单
我已经读了很多关于这方面的文章,甚至还看了《铁路史》,但似乎没有什么适合我的情况 如何使用Ajax请求的结果更新高度选择选项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 /> <%=
<%= 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方法:。