0

次の(そして機能する)動的メニュー/ドロップダウンがあり、プロパティタイプを選択してから、通常のRailsフォームでプロパティサブタイプを選択できます。

properties.js.コーヒー

jQuery ->
  prop_sub_types = $('#property_prop_sub_type_id').html()
  $('#property_prop_type_id').change ->
    prop_type = $('#property_prop_type_id :selected').text()
    escaped_prop_type = prop_type.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
    options = $(prop_sub_types).filter("optgroup[label='#{escaped_prop_type}']").html()
    if options
      $('#property_prop_sub_type_id').html(options)
    else
      $('#property_prop_sub_type_id').empty()

_form.html.erb

<%= form_for(@property) do |f| %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :prop_type_id, 'Property Type' %><br />
    <%= f.collection_select :prop_type_id, PropType.order(:name), :id, :name, :prompt => "-- Select Property Type --" %>
  </div>
  <div class="field">
    <%= f.label :prop_sub_type_id, 'Property Subtype' %><br />
    <%= f.grouped_collection_select :prop_sub_type_id, PropType.order(:name), :prop_sub_types, :name, :id, :name, :prompt => "-- Select Property Subtype --"  %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

これはうまくいきます。ただし、これを単純なフォームgemで既にセットアップされているより大きなアプリに統合したいと考えています。また、 bootstrap-sass経由で Twitter ブートストラップを使用しています。

私のフォームで取得できる最も近いものは次のとおりです。

<div class="field">
        <%= f.association :prop_type, :input_html => { :id => "prop_type_id", :class => "span5" }, :prompt => "-- Select Property Type --" %>
        <%= f.association :prop_sub_type, :input_html => { :id => "prop_sub_type_id", :class => "span5" }, :prompt => "-- Select Property Subtype --" %>
</div>

:アプリがエラーをスローしないように、 :prop_type_id を :prop_type に変更する必要がありました。

しかし、これは機能しません。2 番目のドロップダウンは最初のドロップダウンにマップされません。java/coffeescript で何か間違ったことをしていますか? 2 番目のドロップダウンに「grouped_association」などのようなものはありますか?

これは実行可能ですか、それともフォーム全体を標準のレール形式に戻す必要がありますか?

アップデート

私はそれを機能させることができましたが、次のようにerbをdivに貼り付けました:

 <div class="field">
   <%= f.collection_select :prop_type_id, PropType.order(:name), :id, :name, :prompt => "-- Select Property Type --" %>
</div>
<div class="field">
   <%= f.grouped_collection_select :prop_sub_type_id, PropType.order(:name), :prop_sub_types, :name, :id, :name, :prompt => "-- Select Property Subtype --"  %>
</div>
4

1 に答える 1

10

simple_form_forgithub ページの Group セクションを見てください。私はあなたがやっていることと似たようなことに取り組んでいて、このセクションを見つけました。それは私が進むべき方向性を与えてくれました。f.associationwhich を他の部分で使用する代わりに、 andを使用f.inputすることになりました:group_select:group_method

f.input :country_id, collection: @continents, as: :grouped_select, group_method: :countries

から

simple_form_for github ページ

于 2013-02-17T23:48:45.240 に答える