提交 f7669cd8 编写于 作者: V Vasiliy Ermolovich

add ability to set a prompt string in include_blank option for date helpers, closes #4143

上级 4d8ee288
...@@ -13,7 +13,7 @@ module Helpers ...@@ -13,7 +13,7 @@ module Helpers
# #
# * <tt>:prefix</tt> - overwrites the default prefix of "date" used for the select names. So specifying "birthday" # * <tt>:prefix</tt> - overwrites the default prefix of "date" used for the select names. So specifying "birthday"
# would give birthday[month] instead of date[month] if passed to the <tt>select_month</tt> method. # would give birthday[month] instead of date[month] if passed to the <tt>select_month</tt> method.
# * <tt>:include_blank</tt> - set to true if it should be possible to set an empty date. # * <tt>:include_blank</tt> - set to true or to a prompt string if it should be possible to set an empty date.
# * <tt>:discard_type</tt> - set to true if you want to discard the type part of the select name. If set to true, # * <tt>:discard_type</tt> - set to true if you want to discard the type part of the select name. If set to true,
# the <tt>select_month</tt> method would use simply "date" (which can be overwritten using <tt>:prefix</tt>) instead # the <tt>select_month</tt> method would use simply "date" (which can be overwritten using <tt>:prefix</tt>) instead
# of "date[month]". # of "date[month]".
...@@ -887,7 +887,7 @@ def build_select(type, select_options_as_html) ...@@ -887,7 +887,7 @@ def build_select(type, select_options_as_html)
select_options.merge!(:disabled => 'disabled') if @options[:disabled] select_options.merge!(:disabled => 'disabled') if @options[:disabled]
select_html = "\n" select_html = "\n"
select_html << content_tag(:option, '', :value => '') + "\n" if @options[:include_blank] select_html << content_tag(:option, "#{ERB::Util.html_escape(@options[:include_blank]) if @options[:include_blank].kind_of?(String)}", :value => '') + "\n" if @options[:include_blank]
select_html << prompt_option_tag(type, @options[:prompt]) + "\n" if @options[:prompt] select_html << prompt_option_tag(type, @options[:prompt]) + "\n" if @options[:prompt]
select_html << select_options_as_html select_html << select_options_as_html
......
...@@ -1581,6 +1581,26 @@ def test_date_select_with_nil_and_blank ...@@ -1581,6 +1581,26 @@ def test_date_select_with_nil_and_blank
assert_dom_equal expected, date_select("post", "written_on", :include_blank => true) assert_dom_equal expected, date_select("post", "written_on", :include_blank => true)
end end
def test_date_select_with_stringified_blank
@post = Post.new
start_year = Time.now.year-5
end_year = Time.now.year+5
expected = '<input name="post[written_on(3i)]" type="hidden" id="post_written_on_3i"/>' + "\n"
expected << %{<select id="post_written_on_1i" name="post[written_on(1i)]">\n}
expected << "<option value=\"\">blank</option>\n"
start_year.upto(end_year) { |i| expected << %(<option value="#{i}">#{i}</option>\n) }
expected << "</select>\n"
expected << %{<select id="post_written_on_2i" name="post[written_on(2i)]">\n}
expected << "<option value=\"\">blank</option>\n"
1.upto(12) { |i| expected << %(<option value="#{i}">#{Date::MONTHNAMES[i]}</option>\n) }
expected << "</select>\n"
assert_dom_equal expected, date_select("post", "written_on", :order=>[:year, :month], :include_blank=> 'blank')
end
def test_date_select_with_nil_and_blank_and_order def test_date_select_with_nil_and_blank_and_order
@post = Post.new @post = Post.new
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册