我正在根据下拉列表的值使用 ajax 加载我的部分表单,如下所示:
..form_partial.js.erb
$('#custom_ajax').remove();
<% if @house == "Rent" %>
$('#rest_of_form').after('<div id="custom_ajax"><%= escape_javascript render('/houses/forms/rent') %></div>');
<% else %>
$('#rest_of_form').after('<div id="custom_ajax"><%= escape_javascript render('/houses/forms/buy') %></div>');
<% end %>
这里调用...
.._form.html.erb
<%= form_for @house, :validate => true, :html => { :class => 'form-horizontal',:multipart => true } do |f| %>
..........................................
..........................................
<div id = "rest_of_form"></div>
<div id="custom_ajax">
..........................................
..........................................
</div>
..........................................
..........................................
<script type="text/javascript">
$(document).ready(function() {
$('#house_listing_type').change(function() {
$.ajax({ url: '/houses/' + this.value + '/form_partial' });
});
});
</script>
然后我可以用它加载文件,它工作得很好,唯一的问题是我需要将表单构建器传递给部分,因为我的 _buy.html.erb 看起来像这样
<div class="control-group">
<%= label :property_classification, "Property Classification", :class => "control-label" %>
<div class="controls">
<div class="input-prepend">
<span class="add-on"><i class="icon-info-sign"></i></span>
<%= select :property_classification, ["Residential","Commercial"], {},{:class=>"input-medium"} %>
</div>
</div>
</div>
这显然需要表单生成器,我已经尝试将其作为本地等传递,但无济于事。我还尝试删除所有“f”。这行得通,但表单显示不正确,并且没有任何更高级的表单构建器元素工作..
如何将表单生成器添加到部分?
谢谢
最佳答案
http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html
当不依赖 form_for
时,要使用的表单构建器元素分别是 label_tag
和 select_tag
。
您可能会发现同时使用 form_tag
和 fields_for
更容易在这种情况下,而不是 form_for
。
关于javascript - Rails Ajax 部分传递表单生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227647/