`ActionView::Helpers::FormOptionsHelper#select` should mark option for `nil` as selected
```ruby @post = Post.new @post.category = nil # Before select("post", "category", none: nil, programming: 1, economics: 2) # => # <select name="post[category]" id="post_category"> # <option value="">none</option> # <option value="1">programming</option> # <option value="2">economics</option> # </select> # After select("post", "category", none: nil, programming: 1, economics: 2) # => # <select name="post[category]" id="post_category"> # <option selected="selected" value="">none</option> # <option value="1">programming</option> # <option value="2">economics</option> # </select> ``` To get the same result without these changes we can set `:selected` as `@post.category.to_s`: ```ruby select("post", "category", {none: nil, programming: 1, economics: 2}, {selected: @post.category.to_s} ```
This commit is contained in:
parent
0434e5ba23
commit
cd2cbdcb48
|
@ -1,3 +1,30 @@
|
||||||
|
* `ActionView::Helpers::FormOptionsHelper#select` should mark option for `nil` as selected.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
@post = Post.new
|
||||||
|
@post.category = nil
|
||||||
|
|
||||||
|
# Before
|
||||||
|
select("post", "category", none: nil, programming: 1, economics: 2)
|
||||||
|
# =>
|
||||||
|
# <select name="post[category]" id="post_category">
|
||||||
|
# <option value="">none</option>
|
||||||
|
# <option value="1">programming</option>
|
||||||
|
# <option value="2">economics</option>
|
||||||
|
# </select>
|
||||||
|
|
||||||
|
# After
|
||||||
|
select("post", "category", none: nil, programming: 1, economics: 2)
|
||||||
|
# =>
|
||||||
|
# <select name="post[category]" id="post_category">
|
||||||
|
# <option selected="selected" value="">none</option>
|
||||||
|
# <option value="1">programming</option>
|
||||||
|
# <option value="2">economics</option>
|
||||||
|
# </select>
|
||||||
|
```
|
||||||
|
|
||||||
|
*bogdanvlviv*
|
||||||
|
|
||||||
* Log lines for partial renders and started template renders are now
|
* Log lines for partial renders and started template renders are now
|
||||||
emitted at the `DEBUG` level instead of `INFO`.
|
emitted at the `DEBUG` level instead of `INFO`.
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ module ActionView
|
||||||
|
|
||||||
def render
|
def render
|
||||||
option_tags_options = {
|
option_tags_options = {
|
||||||
selected: @options.fetch(:selected) { value },
|
selected: @options.fetch(:selected) { value.to_s },
|
||||||
disabled: @options[:disabled]
|
disabled: @options[:disabled]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -826,6 +826,24 @@ class FormOptionsHelperTest < ActionView::TestCase
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_select_with_nil_as_selected_value
|
||||||
|
@post = Post.new
|
||||||
|
@post.category = nil
|
||||||
|
assert_dom_equal(
|
||||||
|
"<select name=\"post[category]\" id=\"post_category\"><option selected=\"selected\" value=\"\">none</option>\n<option value=\"1\">programming</option>\n<option value=\"2\">economics</option></select>",
|
||||||
|
select("post", "category", none: nil, programming: 1, economics: 2)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_select_with_nil_and_selected_option_as_nil
|
||||||
|
@post = Post.new
|
||||||
|
@post.category = nil
|
||||||
|
assert_dom_equal(
|
||||||
|
"<select name=\"post[category]\" id=\"post_category\"><option value=\"\">none</option>\n<option value=\"1\">programming</option>\n<option value=\"2\">economics</option></select>",
|
||||||
|
select("post", "category", { none: nil, programming: 1, economics: 2 }, { selected: nil })
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
def test_required_select
|
def test_required_select
|
||||||
assert_dom_equal(
|
assert_dom_equal(
|
||||||
%(<select id="post_category" name="post[category]" required="required"><option value=""></option>\n<option value="abe">abe</option>\n<option value="mus">mus</option>\n<option value="hest">hest</option></select>),
|
%(<select id="post_category" name="post[category]" required="required"><option value=""></option>\n<option value="abe">abe</option>\n<option value="mus">mus</option>\n<option value="hest">hest</option></select>),
|
||||||
|
|
Loading…
Reference in New Issue