Skip to content
  • Takumi Shotoku's avatar
    d8fe10ae
    [v6.1.0.rc1] Fix regression for select tag helper with array (#40522) · d8fe10ae
    Takumi Shotoku authored
    * Fix regression for select tag helper with array
    
    v6.1.0.rc1 does not generate DOM with the selected attribute
    when the object's method returns an array.
    This is because it has been changed by #34809 to always convert
    to a string.
    
    This commit fixes the issue.
    
    ## Steps to reproduce
    
    ```ruby
    # frozen_string_literal: true
    
    require "bundler/inline"
    
    gemfile(true) do
      source "https://rubygems.org"
    
      git_source(:github) { |repo| "https://github.com/#{repo}.git" }
    
      gem "rails", ENV["RAILS_VERSION"]
    end
    
    require "action_view"
    require "minitest/autorun"
    
    class BugTest < ActionView::TestCase
      Post = Struct.new("Post", :tags)
    
      def test_stuff
        @post = Post.new
        @post.tags = ["foo", "bar"]
        expected = <<~DOM.strip
          <select name="post[tags]" id="post_tags"><option selected="selected" value="foo">foo</option>
          <option selected="selected" value="bar">bar</option>
          <option value="buz">buz</option></select>
        DOM
    
        assert_dom_equal(expected, select("post", "tags", %W(foo bar buz), { multiple: true }))
      end
    end
    ```
    
    The test succeeds on v6.0.3.4, but the test fails on v6.1.0.rc1.
    
    * Update actionview/lib/action_view/helpers/tags/select.rb
    
    [Takumi Shotoku + Rafael Mendonça França]
    d8fe10ae
    [v6.1.0.rc1] Fix regression for select tag helper with array (#40522)
    Takumi Shotoku authored
    * Fix regression for select tag helper with array
    
    v6.1.0.rc1 does not generate DOM with the selected attribute
    when the object's method returns an array.
    This is because it has been changed by #34809 to always convert
    to a string.
    
    This commit fixes the issue.
    
    ## Steps to reproduce
    
    ```ruby
    # frozen_string_literal: true
    
    require "bundler/inline"
    
    gemfile(true) do
      source "https://rubygems.org"
    
      git_source(:github) { |repo| "https://github.com/#{repo}.git" }
    
      gem "rails", ENV["RAILS_VERSION"]
    end
    
    require "action_view"
    require "minitest/autorun"
    
    class BugTest < ActionView::TestCase
      Post = Struct.new("Post", :tags)
    
      def test_stuff
        @post = Post.new
        @post.tags = ["foo", "bar"]
        expected = <<~DOM.strip
          <select name="post[tags]" id="post_tags"><option selected="selected" value="foo">foo</option>
          <option selected="selected" value="bar">bar</option>
          <option value="buz">buz</option></select>
        DOM
    
        assert_dom_equal(expected, select("post", "tags", %W(foo bar buz), { multiple: true }))
      end
    end
    ```
    
    The test succeeds on v6.0.3.4, but the test fails on v6.1.0.rc1.
    
    * Update actionview/lib/action_view/helpers/tags/select.rb
    
    [Takumi Shotoku + Rafael Mendonça França]
Loading