select2-rails gem 似乎在我的项目中的浏览器返回功能存在问题:
重新创建错误的步骤:
- 转到http://methoden-app.herokuapp.com/
- 点击任何链接
- 使用浏览器的后退按钮
表单中的 select2-selects 将翻倍: bug 的图像
我的代码:
宝石文件:
ruby 2.3.1
rails 5.0.0.1
gem select2-rails 4.0.3
看法:
<head>
<script>
$(document).ready(function() {
$(".multi_select").select2({ theme: bootstrap", placeholder: "Bitte mindestens 1 auswählen"
});
});
</script>
</head>
<%=form_tag( practices_path, method: "get", remote: true ) do %>
<div class="form-group">
<%=label_tag(:category_ids, "Kategorien:") %>
<%=select_tag( 'category_ids', options_from_collection_for_select(@categories, "id", "name"), class: "multi_select", multiple: true, style: "width: 100%", autocomplete: 'off' ) %>
</div>
.
.
.
<div class="form-group">
<%= label_tag(:area_ids, "Räume:") %>
<%= select_tag( 'area_ids',
options_from_collection_for_select(@areas, "id", "name"),
class: "multi_select", multiple: true, style: "width: 100%" ) %>
</div>
<div class="form-group row">
<%=submit_tag( "Filter anwenden", class: "btn btn-primary" ) %>
<%=link_to "Filter zurücksetzen", root_path, class: "btn btn-default", style: "float: right" %>
</div>
<% end %>
控制器:
class PracticesController < ApplicationController
.
.
.
def index
@categories = Category.all
@areas = Area.all
@practices = Practice.with_category(params[:category_ids])\
.with_participants(params[:participants])\
.with_min_duration(params[:min_duration])\
.with_max_duration(params[:max_duration])\
.with_age(params[:age])\
.with_areas(params[:area_ids])\
.paginate(:page => params[:page])
respond_to do |format|
format.html
format.js
end
end
.
.
.
end
我尝试了什么:
- chrome-pc、chrome-android 和 firefox-pc -> 没有区别
- 将 select2 jquery-code 放入 application.js/practices.coffee -> 表单未使用 select2-styling
删除以下代码段,但保留“{}”之间的部分 -> 表单不使用 select2-styling
$(document).ready(function() { ... });
添加
autocomplete: 'off'
-> 没有区别- 在网上搜索了 2 天
- 尝试为该错误编写测试,由于缺乏知识而放弃
我的问题:
- 关于为什么会发生这种情况以及如何处理的任何想法?
如何在我的错误测试中使用浏览器返回功能?(我只知道Minitest,没有Rspec)
require 'test_helper' class PracticesIndexTest < ActionDispatch::IntegrationTest test "select2 should work properly" do get practices_path assert_template 'practices/index' assert_select 'select.multi_select', count: 2 get practice_path(id: 2) # something like 'javascript:history.back()' ? assert_select 'select.multi_select', count: 2 end end
我对编程还是很陌生(直接来自 Michael Hartls rails 教程进入这个项目)。所以我希望你的专业人士可以帮助我;) THX