collection_selectドロップダウンからの選択に基づいて、データベースからのチームの最近のスコアを表示しようとしています。ドロップダウンで変更イベントをリッスンする必要があることは知っていますが、AJAXリクエストを実行する方法や、ビューにデータを表示する方法がわかりません。
2022 次
2 に答える
2
category
さて、モデルを使って例を書きsubcategory
ます。
1つ目は、モデル間の関係です。
class Category
has_many :subcategories
has_many :objects
end
class Subcategory
belongs_to :category
has_many :objects
end
class Object
belongs_to :category
belongs_to :subcategory
end
これで、フォームが表示されます。たとえば、simple_form gem
(で実行できますform_for
):
<%= simple_form_for(@object, :html => {:multipart => true }) do |f| %>
<%= f.input :category, :collection => Category.all :prompt => "Select Category" %>
<%= f.input :subcategory, :label_html => { :class => 'subcategory_label_class' } do %>
<%= f.grouped_collection_select :subcategory_id, Category.order_by(:title), :subcategories, :title, :id, :name, include_blank: true %>
<% end %>
<%= f.button :submit %>
<% end %>
これにより、サブカテゴリを親カテゴリでグループ化しました。
次のステップでは、objects.js.coffeeにコードを追加する必要があります
$('#object_subcategory_id').parent().hide()
subcategories = $('#object_subcategory_id').html()
$('#object_category').change ->
category = $('#object_category :selected').text()
escaped_category = category.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
options = $(subcategories).filter("optgroup[label='#{escaped_category}']").html()
if options
$('#object_subcategory_id').html(options)
$('.subcategory_label_class').show()
$('#object_subcategory_id').parent().show()
else
$('#object_subcategory_id').empty()
$('.subcategory_label_class').hide()
$('#object_subcategory_id').parent().hide()
この例をニーズに合わせることができます。
お役に立てば幸いです。
よろしく!
于 2013-01-22T00:41:35.407 に答える
2
別のコントローラーを構築し、変更イベントがトリガーされたときにajaxリクエストを送信する必要があります。コントローラーは、クライアントのjavascriptで処理する必要があるjs応答を返します...次のリンクで例をhttp:/ /blog.bernatfarrero.com/jquery-and-rails-3-mini-tutorial/
于 2013-01-22T00:25:38.437 に答える