动态类别和子类别选择器 [Rails 6]
Dynamic Category and Subcategory Selector [Rails 6]
我想创建一个类别 Select 标签,当您 select 类别时,为另一个 select_tag 的子类别更改 select 选项类别 selected.
我尝试了刺激反射,但我对结果不满意,还有其他方法吗?
是为了_form.html.erb的Project模型,不刷新页面怎么办?
传递您的类别,包括它们的子类别
@categories = Category.includes(:subcategories)
然后在第一个选择器上迭代它。
<select id="category" name="category_id">
<% @categories.each do |category| %>
<option value="<%= category.id %>"><%= category.name %></option>
<% end %>
</select>
<select id="subcategory" name="subcategory_id" disabled></select>
在第二个选择器上使用 javascript
以根据第一个输入值动态生成其元素。在第一个上放置一个侦听器,以跟踪它的值何时发生变化。
<script>
var categories = <%= @categories %>
$("#category").change(function(e) {
var subcategories = [];
var selectedCategoryId = $(this).val();
$('#subcategory').empty();
subcategories = categories.find(x => x.id === selectedCategoryId).subcategories;
subcategories.each(function (sub) {
$('#subcategory').appendChild(`<option value="${sub.id}">${sub.name}</option>`);
});
$('#subcategory').prop('disabled', false);
});
</script>
这行得通。您还可以创建一个助手并通过 ajax 调用它。
我想创建一个类别 Select 标签,当您 select 类别时,为另一个 select_tag 的子类别更改 select 选项类别 selected.
我尝试了刺激反射,但我对结果不满意,还有其他方法吗? 是为了_form.html.erb的Project模型,不刷新页面怎么办?
传递您的类别,包括它们的子类别
@categories = Category.includes(:subcategories)
然后在第一个选择器上迭代它。
<select id="category" name="category_id">
<% @categories.each do |category| %>
<option value="<%= category.id %>"><%= category.name %></option>
<% end %>
</select>
<select id="subcategory" name="subcategory_id" disabled></select>
在第二个选择器上使用 javascript
以根据第一个输入值动态生成其元素。在第一个上放置一个侦听器,以跟踪它的值何时发生变化。
<script>
var categories = <%= @categories %>
$("#category").change(function(e) {
var subcategories = [];
var selectedCategoryId = $(this).val();
$('#subcategory').empty();
subcategories = categories.find(x => x.id === selectedCategoryId).subcategories;
subcategories.each(function (sub) {
$('#subcategory').appendChild(`<option value="${sub.id}">${sub.name}</option>`);
});
$('#subcategory').prop('disabled', false);
});
</script>
这行得通。您还可以创建一个助手并通过 ajax 调用它。