1

次のように、ドロップダウンの値に応じて、フォームの一部を 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」を削除しようとしました。これは機能しますが、フォームが正しく表示されず、洗練されたフォーム ビルダー要素はどれも機能しません..

フォームビルダーを部分的に取得するにはどうすればよいですか?

ありがとう

4

2 に答える 2

1

ここで提案されたソリューションで同じ質問に答えました:

レールのremote_functionでフォームビルダーを渡しますか?

于 2013-11-11T09:10:53.693 に答える
1

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html
に依存しない場合form_for、使用するフォームビルダー要素はそれぞれlabel_tagselect_tagです。

この場合、 よりもform_tagとの両方を使用する方が簡単な場合があります。fields_forform_for

于 2013-04-26T04:35:08.407 に答える