2

select2-rails gem 似乎在我的项目中的浏览器返回功能存在问题:

重新创建错误的步骤:

表单中的 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 天
  • 尝试为该错误编写测试,由于缺乏知识而放弃

我的问题:

  1. 关于为什么会发生这种情况以及如何处理的任何想法?
  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

4

0 回答 0