bootstrap_form 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +28 -14
- data/lib/bootstrap_form/form_builder.rb +29 -12
- data/lib/bootstrap_form/version.rb +1 -1
- data/test/bootstrap_form_test.rb +31 -7
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +17 -15
- data/test/dummy/log/test.log +11 -0
- metadata +2 -2
data/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
[![Build Status](https://travis-ci.org/potenza/bootstrap_form.png)](https://travis-ci.org/potenza/bootstrap_form)
|
2
|
+
|
1
3
|
# BootstrapForm
|
2
4
|
|
3
5
|
**BootstrapForm** is a form builder that makes it super easy to
|
@@ -112,7 +114,7 @@ that the entire control group will display an error if an associated
|
|
112
114
|
validations fails:
|
113
115
|
|
114
116
|
```erb
|
115
|
-
<%= f.control_group :skill_level, label: { text: 'Skill' } do %>
|
117
|
+
<%= f.control_group :skill_level, label: { text: 'Skill' }, help: 'This is optional' do %>
|
116
118
|
<%= f.radio_button :skill_level, 0, label: 'Novice', checked: true %>
|
117
119
|
<%= f.radio_button :skill_level, 1, label: 'Intermediate' %>
|
118
120
|
<%= f.radio_button :skill_level, 2, label: 'Advanced' %>
|
@@ -175,19 +177,18 @@ You can prepend an input file with the `prepend` option:
|
|
175
177
|
<%= f.text_field :twitter_username, prepend: '@' %>
|
176
178
|
```
|
177
179
|
|
178
|
-
###
|
180
|
+
### Appending inputs
|
179
181
|
|
180
|
-
|
181
|
-
|
182
|
-
You can use the `actions` helper, which wraps your submit button in a
|
183
|
-
`.form-actions` class.
|
182
|
+
You can append an input file with the `append` option:
|
184
183
|
|
185
184
|
```erb
|
186
|
-
<%= f.
|
187
|
-
<%= f.primary 'Create My Account' %>
|
188
|
-
<% end %>
|
185
|
+
<%= f.text_field :amount, append: '.00' %>
|
189
186
|
```
|
190
187
|
|
188
|
+
### Submit buttons
|
189
|
+
|
190
|
+
This gem provides a few different options for submit buttons.
|
191
|
+
|
191
192
|
Here's a simple `primary` button (this applies the `.btn` and `.btn-primary` classes):
|
192
193
|
|
193
194
|
```erb
|
@@ -200,6 +201,15 @@ Here's a `secondary` submit button (applies just the `.btn` class):
|
|
200
201
|
<%= f.secondary "Create My Account" %>
|
201
202
|
```
|
202
203
|
|
204
|
+
You can use the `actions` helper, which wraps your submit button in a
|
205
|
+
`.form-actions` class.
|
206
|
+
|
207
|
+
```erb
|
208
|
+
<%= f.actions do %>
|
209
|
+
<%= f.primary 'Create My Account' %>
|
210
|
+
<% end %>
|
211
|
+
```
|
212
|
+
|
203
213
|
And if you don't want to use the `actions` helper, here's how you might
|
204
214
|
style a `primary` button with horizontal-style forms:
|
205
215
|
|
@@ -213,9 +223,9 @@ style a `primary` button with horizontal-style forms:
|
|
213
223
|
|
214
224
|
### Custom Control Groups
|
215
225
|
|
216
|
-
Sometimes you need to wrap
|
217
|
-
This is mostly needed when using horizontal-style
|
218
|
-
|
226
|
+
Sometimes you need to wrap an element in Bootstrap-style markup.
|
227
|
+
This is mostly needed to align submit buttons when using horizontal-style
|
228
|
+
forms (also shown above):
|
219
229
|
|
220
230
|
```erb
|
221
231
|
<%= bootstrap_form_for(@user, html: { class: 'form-horizontal' }) do |f| %>
|
@@ -248,6 +258,10 @@ classes, you can use the `alert_message` helper:
|
|
248
258
|
<%= f.alert_message "Please fix the errors below." %>
|
249
259
|
```
|
250
260
|
|
251
|
-
##
|
261
|
+
## Contributors
|
262
|
+
|
263
|
+
https://github.com/potenza/bootstrap_form/graphs/contributors
|
264
|
+
|
265
|
+
## License
|
252
266
|
|
253
|
-
|
267
|
+
MIT License. Copyright 2012-2013 Stephen Potenza (https://github.com/potenza)
|
@@ -19,12 +19,13 @@ module BootstrapForm
|
|
19
19
|
define_method(method_name) do |name, *args|
|
20
20
|
options = args.extract_options!.symbolize_keys!
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
help = content_tag(@help_tag, class: @help_css) { help } if help
|
22
|
+
label = options.delete(:label)
|
23
|
+
help = options.delete(:help)
|
25
24
|
|
26
|
-
|
27
|
-
|
25
|
+
control_group(name, label: { text: label }, help: help) do
|
26
|
+
|
27
|
+
args << options.except(:prepend, :append)
|
28
|
+
element = super(name, *args)
|
28
29
|
|
29
30
|
if prepend = options.delete(:prepend)
|
30
31
|
element = content_tag(:div, class: 'input-prepend') do
|
@@ -32,6 +33,12 @@ module BootstrapForm
|
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
36
|
+
if append = options.delete(:append)
|
37
|
+
element = content_tag(:div, class: 'input-append') do
|
38
|
+
element + content_tag(:span, append, class: 'add-on')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
35
42
|
element
|
36
43
|
end
|
37
44
|
end
|
@@ -60,21 +67,31 @@ module BootstrapForm
|
|
60
67
|
end
|
61
68
|
|
62
69
|
def control_group(name = nil, options = {}, &block)
|
70
|
+
has_name = !(name.nil? || object.errors[name].empty?)
|
71
|
+
|
63
72
|
options[:class] ||= 'control-group'
|
64
|
-
options[:class] << ' error' if
|
73
|
+
options[:class] << ' error' if has_name
|
74
|
+
|
75
|
+
label = options.delete(:label)
|
76
|
+
_help = options.delete(:help)
|
65
77
|
|
66
|
-
content_tag(:div, options
|
78
|
+
content_tag(:div, options) do
|
67
79
|
html = ''
|
68
80
|
|
69
|
-
if
|
70
|
-
|
71
|
-
|
81
|
+
if label
|
82
|
+
label[:class] ||= 'control-label'
|
83
|
+
label[:for] ||= '' if name.nil?
|
72
84
|
|
73
|
-
html << label(name,
|
85
|
+
html << label(name, label[:text], label.except(:text))
|
74
86
|
end
|
75
87
|
|
76
88
|
html << content_tag(:div, class: 'controls') do
|
77
|
-
block.call
|
89
|
+
controls = block.call
|
90
|
+
|
91
|
+
help = has_name ? object.errors[name].join(', ') : _help
|
92
|
+
controls << content_tag(@help_tag, help, class: @help_css) if help
|
93
|
+
|
94
|
+
controls.html_safe
|
78
95
|
end
|
79
96
|
|
80
97
|
html.html_safe
|
data/test/bootstrap_form_test.rb
CHANGED
@@ -84,22 +84,22 @@ class BootstrapFormTest < ActionView::TestCase
|
|
84
84
|
end
|
85
85
|
|
86
86
|
test "date selects are wrapped correctly" do
|
87
|
-
Timecop.freeze(Time.
|
87
|
+
Timecop.freeze(Time.utc(2012, 2, 3)) do
|
88
88
|
expected = %{<div class=\"control-group\"><label class=\"control-label\" for=\"user_misc\">Misc</label><div class=\"controls\"><select id=\"user_misc_1i\" name=\"user[misc(1i)]\">\n<option value=\"2007\">2007</option>\n<option value=\"2008\">2008</option>\n<option value=\"2009\">2009</option>\n<option value=\"2010\">2010</option>\n<option value=\"2011\">2011</option>\n<option selected=\"selected\" value=\"2012\">2012</option>\n<option value=\"2013\">2013</option>\n<option value=\"2014\">2014</option>\n<option value=\"2015\">2015</option>\n<option value=\"2016\">2016</option>\n<option value=\"2017\">2017</option>\n</select>\n<select id=\"user_misc_2i\" name=\"user[misc(2i)]\">\n<option value=\"1\">January</option>\n<option selected=\"selected\" value=\"2\">February</option>\n<option value=\"3\">March</option>\n<option value=\"4\">April</option>\n<option value=\"5\">May</option>\n<option value=\"6\">June</option>\n<option value=\"7\">July</option>\n<option value=\"8\">August</option>\n<option value=\"9\">September</option>\n<option value=\"10\">October</option>\n<option value=\"11\">November</option>\n<option value=\"12\">December</option>\n</select>\n<select id=\"user_misc_3i\" name=\"user[misc(3i)]\">\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option selected=\"selected\" value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n</div></div>}
|
89
89
|
assert_equal expected, @builder.date_select(:misc)
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
93
93
|
test "time selects are wrapped correctly" do
|
94
|
-
Timecop.freeze(Time.
|
95
|
-
expected = %{<div class=\"control-group\"><label class=\"control-label\" for=\"user_misc\">Misc</label><div class=\"controls\"><input id=\"user_misc_1i\" name=\"user[misc(1i)]\" type=\"hidden\" value=\"2012\" />\n<input id=\"user_misc_2i\" name=\"user[misc(2i)]\" type=\"hidden\" value=\"2\" />\n<input id=\"user_misc_3i\" name=\"user[misc(3i)]\" type=\"hidden\" value=\"3\" />\n<select id=\"user_misc_4i\" name=\"user[misc(4i)]\">\n<option value=\"00\">00</option>\n<option value=\"01\">01</option>\n<option value=\"02\">02</option>\n<option value=\"03\">03</option>\n<option value=\"04\">04</option>\n<option value=\"05\">05</option>\n<option value=\"06\">06</option>\n<option value=\"07\">07</option>\n<option value=\"08\">08</option>\n<option value=\"09\">09</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option
|
94
|
+
Timecop.freeze(Time.utc(2012, 2, 3, 12, 0, 0)) do
|
95
|
+
expected = %{<div class=\"control-group\"><label class=\"control-label\" for=\"user_misc\">Misc</label><div class=\"controls\"><input id=\"user_misc_1i\" name=\"user[misc(1i)]\" type=\"hidden\" value=\"2012\" />\n<input id=\"user_misc_2i\" name=\"user[misc(2i)]\" type=\"hidden\" value=\"2\" />\n<input id=\"user_misc_3i\" name=\"user[misc(3i)]\" type=\"hidden\" value=\"3\" />\n<select id=\"user_misc_4i\" name=\"user[misc(4i)]\">\n<option value=\"00\">00</option>\n<option value=\"01\">01</option>\n<option value=\"02\">02</option>\n<option value=\"03\">03</option>\n<option value=\"04\">04</option>\n<option value=\"05\">05</option>\n<option value=\"06\">06</option>\n<option value=\"07\">07</option>\n<option value=\"08\">08</option>\n<option value=\"09\">09</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option selected=\"selected\" value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n</select>\n : <select id=\"user_misc_5i\" name=\"user[misc(5i)]\">\n<option selected=\"selected\" value=\"00\">00</option>\n<option value=\"01\">01</option>\n<option value=\"02\">02</option>\n<option value=\"03\">03</option>\n<option value=\"04\">04</option>\n<option value=\"05\">05</option>\n<option value=\"06\">06</option>\n<option value=\"07\">07</option>\n<option value=\"08\">08</option>\n<option value=\"09\">09</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n<option value=\"32\">32</option>\n<option value=\"33\">33</option>\n<option value=\"34\">34</option>\n<option value=\"35\">35</option>\n<option value=\"36\">36</option>\n<option value=\"37\">37</option>\n<option value=\"38\">38</option>\n<option value=\"39\">39</option>\n<option value=\"40\">40</option>\n<option value=\"41\">41</option>\n<option value=\"42\">42</option>\n<option value=\"43\">43</option>\n<option value=\"44\">44</option>\n<option value=\"45\">45</option>\n<option value=\"46\">46</option>\n<option value=\"47\">47</option>\n<option value=\"48\">48</option>\n<option value=\"49\">49</option>\n<option value=\"50\">50</option>\n<option value=\"51\">51</option>\n<option value=\"52\">52</option>\n<option value=\"53\">53</option>\n<option value=\"54\">54</option>\n<option value=\"55\">55</option>\n<option value=\"56\">56</option>\n<option value=\"57\">57</option>\n<option value=\"58\">58</option>\n<option value=\"59\">59</option>\n</select>\n</div></div>}
|
96
96
|
assert_equal expected, @builder.time_select(:misc)
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
100
100
|
test "datetime selects are wrapped correctly" do
|
101
|
-
Timecop.freeze(Time.
|
102
|
-
expected = %{<div class=\"control-group\"><label class=\"control-label\" for=\"user_misc\">Misc</label><div class=\"controls\"><select id=\"user_misc_1i\" name=\"user[misc(1i)]\">\n<option value=\"2007\">2007</option>\n<option value=\"2008\">2008</option>\n<option value=\"2009\">2009</option>\n<option value=\"2010\">2010</option>\n<option value=\"2011\">2011</option>\n<option selected=\"selected\" value=\"2012\">2012</option>\n<option value=\"2013\">2013</option>\n<option value=\"2014\">2014</option>\n<option value=\"2015\">2015</option>\n<option value=\"2016\">2016</option>\n<option value=\"2017\">2017</option>\n</select>\n<select id=\"user_misc_2i\" name=\"user[misc(2i)]\">\n<option value=\"1\">January</option>\n<option selected=\"selected\" value=\"2\">February</option>\n<option value=\"3\">March</option>\n<option value=\"4\">April</option>\n<option value=\"5\">May</option>\n<option value=\"6\">June</option>\n<option value=\"7\">July</option>\n<option value=\"8\">August</option>\n<option value=\"9\">September</option>\n<option value=\"10\">October</option>\n<option value=\"11\">November</option>\n<option value=\"12\">December</option>\n</select>\n<select id=\"user_misc_3i\" name=\"user[misc(3i)]\">\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option selected=\"selected\" value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n — <select id=\"user_misc_4i\" name=\"user[misc(4i)]\">\n<option value=\"00\">00</option>\n<option value=\"01\">01</option>\n<option value=\"02\">02</option>\n<option value=\"03\">03</option>\n<option value=\"04\">04</option>\n<option value=\"05\">05</option>\n<option value=\"06\">06</option>\n<option value=\"07\">07</option>\n<option value=\"08\">08</option>\n<option value=\"09\">09</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option
|
101
|
+
Timecop.freeze(Time.utc(2012, 2, 3, 12, 0, 0)) do
|
102
|
+
expected = %{<div class=\"control-group\"><label class=\"control-label\" for=\"user_misc\">Misc</label><div class=\"controls\"><select id=\"user_misc_1i\" name=\"user[misc(1i)]\">\n<option value=\"2007\">2007</option>\n<option value=\"2008\">2008</option>\n<option value=\"2009\">2009</option>\n<option value=\"2010\">2010</option>\n<option value=\"2011\">2011</option>\n<option selected=\"selected\" value=\"2012\">2012</option>\n<option value=\"2013\">2013</option>\n<option value=\"2014\">2014</option>\n<option value=\"2015\">2015</option>\n<option value=\"2016\">2016</option>\n<option value=\"2017\">2017</option>\n</select>\n<select id=\"user_misc_2i\" name=\"user[misc(2i)]\">\n<option value=\"1\">January</option>\n<option selected=\"selected\" value=\"2\">February</option>\n<option value=\"3\">March</option>\n<option value=\"4\">April</option>\n<option value=\"5\">May</option>\n<option value=\"6\">June</option>\n<option value=\"7\">July</option>\n<option value=\"8\">August</option>\n<option value=\"9\">September</option>\n<option value=\"10\">October</option>\n<option value=\"11\">November</option>\n<option value=\"12\">December</option>\n</select>\n<select id=\"user_misc_3i\" name=\"user[misc(3i)]\">\n<option value=\"1\">1</option>\n<option value=\"2\">2</option>\n<option selected=\"selected\" value=\"3\">3</option>\n<option value=\"4\">4</option>\n<option value=\"5\">5</option>\n<option value=\"6\">6</option>\n<option value=\"7\">7</option>\n<option value=\"8\">8</option>\n<option value=\"9\">9</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n</select>\n — <select id=\"user_misc_4i\" name=\"user[misc(4i)]\">\n<option value=\"00\">00</option>\n<option value=\"01\">01</option>\n<option value=\"02\">02</option>\n<option value=\"03\">03</option>\n<option value=\"04\">04</option>\n<option value=\"05\">05</option>\n<option value=\"06\">06</option>\n<option value=\"07\">07</option>\n<option value=\"08\">08</option>\n<option value=\"09\">09</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option selected=\"selected\" value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n</select>\n : <select id=\"user_misc_5i\" name=\"user[misc(5i)]\">\n<option selected=\"selected\" value=\"00\">00</option>\n<option value=\"01\">01</option>\n<option value=\"02\">02</option>\n<option value=\"03\">03</option>\n<option value=\"04\">04</option>\n<option value=\"05\">05</option>\n<option value=\"06\">06</option>\n<option value=\"07\">07</option>\n<option value=\"08\">08</option>\n<option value=\"09\">09</option>\n<option value=\"10\">10</option>\n<option value=\"11\">11</option>\n<option value=\"12\">12</option>\n<option value=\"13\">13</option>\n<option value=\"14\">14</option>\n<option value=\"15\">15</option>\n<option value=\"16\">16</option>\n<option value=\"17\">17</option>\n<option value=\"18\">18</option>\n<option value=\"19\">19</option>\n<option value=\"20\">20</option>\n<option value=\"21\">21</option>\n<option value=\"22\">22</option>\n<option value=\"23\">23</option>\n<option value=\"24\">24</option>\n<option value=\"25\">25</option>\n<option value=\"26\">26</option>\n<option value=\"27\">27</option>\n<option value=\"28\">28</option>\n<option value=\"29\">29</option>\n<option value=\"30\">30</option>\n<option value=\"31\">31</option>\n<option value=\"32\">32</option>\n<option value=\"33\">33</option>\n<option value=\"34\">34</option>\n<option value=\"35\">35</option>\n<option value=\"36\">36</option>\n<option value=\"37\">37</option>\n<option value=\"38\">38</option>\n<option value=\"39\">39</option>\n<option value=\"40\">40</option>\n<option value=\"41\">41</option>\n<option value=\"42\">42</option>\n<option value=\"43\">43</option>\n<option value=\"44\">44</option>\n<option value=\"45\">45</option>\n<option value=\"46\">46</option>\n<option value=\"47\">47</option>\n<option value=\"48\">48</option>\n<option value=\"49\">49</option>\n<option value=\"50\">50</option>\n<option value=\"51\">51</option>\n<option value=\"52\">52</option>\n<option value=\"53\">53</option>\n<option value=\"54\">54</option>\n<option value=\"55\">55</option>\n<option value=\"56\">56</option>\n<option value=\"57\">57</option>\n<option value=\"58\">58</option>\n<option value=\"59\">59</option>\n</select>\n</div></div>}
|
103
103
|
assert_equal expected, @builder.datetime_select(:misc)
|
104
104
|
end
|
105
105
|
end
|
@@ -134,6 +134,11 @@ class BootstrapFormTest < ActionView::TestCase
|
|
134
134
|
assert_equal expected, @builder.text_field(:email, prepend: 'Gmail')
|
135
135
|
end
|
136
136
|
|
137
|
+
test "adding append text" do
|
138
|
+
expected = %{<div class=\"control-group\"><label class=\"control-label\" for=\"user_email\">Email</label><div class=\"controls\"><div class=\"input-append\"><input id=\"user_email\" name=\"user[email]\" size=\"30\" type=\"text\" value=\"steve@example.com\" /><span class="add-on">Gmail</span></div></div></div>}
|
139
|
+
assert_equal expected, @builder.text_field(:email, append: 'Gmail')
|
140
|
+
end
|
141
|
+
|
137
142
|
test "passing :help to a field displays it inline" do
|
138
143
|
expected = %{<div class=\"control-group\"><label class=\"control-label\" for=\"user_email\">Email</label><div class=\"controls\"><input id=\"user_email\" name=\"user[email]\" size=\"30\" type=\"text\" value=\"steve@example.com\" /><span class=\"help-inline\">This is required</span></div></div>}
|
139
144
|
assert_equal expected, @builder.text_field(:email, help: 'This is required')
|
@@ -198,7 +203,16 @@ class BootstrapFormTest < ActionView::TestCase
|
|
198
203
|
assert_equal expected, output
|
199
204
|
end
|
200
205
|
|
201
|
-
test 'control_group renders the
|
206
|
+
test 'control_group renders the :help corrrectly' do
|
207
|
+
output = @builder.control_group nil, help: 'Foobar' do
|
208
|
+
'<span>custom control here</span>'
|
209
|
+
end
|
210
|
+
|
211
|
+
expected = %{<div class="control-group"><div class="controls"><span>custom control here</span><span class="help-inline">Foobar</span></div></div>}
|
212
|
+
assert_equal expected, output
|
213
|
+
end
|
214
|
+
|
215
|
+
test 'control_group renders the "error" class and message corrrectly when object is invalid' do
|
202
216
|
@user.email = nil
|
203
217
|
@user.valid?
|
204
218
|
|
@@ -206,7 +220,7 @@ class BootstrapFormTest < ActionView::TestCase
|
|
206
220
|
'<span>custom control here</span>'
|
207
221
|
end
|
208
222
|
|
209
|
-
expected = %{<div class="control-group error"><div class="controls"><span>custom control here</span></div></div>}
|
223
|
+
expected = %{<div class="control-group error"><div class="controls"><span>custom control here</span><span class="help-inline">can't be blank, is too short (minimum is 5 characters)</span></div></div>}
|
210
224
|
assert_equal expected, output
|
211
225
|
end
|
212
226
|
|
@@ -228,6 +242,16 @@ class BootstrapFormTest < ActionView::TestCase
|
|
228
242
|
assert_equal expected, @builder.primary('Submit', disable_with: 'Saving...')
|
229
243
|
end
|
230
244
|
|
245
|
+
test "secondary button contains the correct classes" do
|
246
|
+
expected = %{<input class=\"btn\" name=\"commit\" type=\"submit\" value=\"Submit\" />}
|
247
|
+
assert_equal expected, @builder.secondary('Submit')
|
248
|
+
end
|
249
|
+
|
250
|
+
test "secondary button with a disabled state" do
|
251
|
+
expected = %{<input class=\"btn\" data-disable-with="Saving..." name=\"commit\" type=\"submit\" value=\"Submit\" />}
|
252
|
+
assert_equal expected, @builder.secondary('Submit', disable_with: 'Saving...')
|
253
|
+
end
|
254
|
+
|
231
255
|
test "passing :help :block to the form builder" do
|
232
256
|
output = bootstrap_form_for(@user, help: :block) do |f|
|
233
257
|
f.text_field(:email, help: 'This is required')
|
data/test/dummy/db/test.sqlite3
CHANGED
Binary file
|
@@ -1,30 +1,32 @@
|
|
1
1
|
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
2
2
|
[1m[35m (2.7ms)[0m CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL)
|
3
|
-
[1m[36m (0.
|
4
|
-
[1m[35m (1.
|
5
|
-
[1m[36m (0.
|
3
|
+
[1m[36m (0.0ms)[0m [1mPRAGMA index_list("schema_migrations")[0m
|
4
|
+
[1m[35m (1.0ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
5
|
+
[1m[36m (0.7ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
6
6
|
Migrating to CreateUsers (20120106063521)
|
7
7
|
[1m[35m (0.3ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "password" varchar(255), "comments" text, "status" varchar(255), "misc" varchar(255), "created_at" datetime, "updated_at" datetime)
|
8
8
|
[1m[36m (0.1ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20120106063521')[0m
|
9
|
-
[1m[35m (0.
|
9
|
+
[1m[35m (0.2ms)[0m select sqlite_version(*)
|
10
10
|
[1m[36m (0.1ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
11
11
|
[1m[35m (0.0ms)[0m PRAGMA index_list("users")
|
12
|
-
[1m[36m (0.
|
13
|
-
|
14
|
-
[1m[
|
15
|
-
[1m[35m (1.1ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
12
|
+
[1m[36m (0.7ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
13
|
+
Migrating to CreateUsers (20120106063521)
|
14
|
+
[1m[35m (0.1ms)[0m select sqlite_version(*)
|
16
15
|
[1m[36m (0.1ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
16
|
+
[1m[35m (0.0ms)[0m PRAGMA index_list("users")
|
17
|
+
[1m[36m (0.1ms)[0m [1mselect sqlite_version(*)[0m
|
18
|
+
[1m[35m (2.7ms)[0m CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL)
|
19
|
+
[1m[36m (0.0ms)[0m [1mPRAGMA index_list("schema_migrations")[0m
|
20
|
+
[1m[35m (1.0ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
21
|
+
[1m[36m (0.7ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
17
22
|
Migrating to CreateUsers (20120106063521)
|
18
23
|
[1m[35m (0.3ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "password" varchar(255), "comments" text, "status" varchar(255), "misc" varchar(255), "created_at" datetime, "updated_at" datetime)
|
19
24
|
[1m[36m (0.1ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20120106063521')[0m
|
20
25
|
[1m[35m (0.2ms)[0m select sqlite_version(*)
|
21
26
|
[1m[36m (0.1ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
22
27
|
[1m[35m (0.0ms)[0m PRAGMA index_list("users")
|
23
|
-
[1m[36m (0.
|
28
|
+
[1m[36m (0.7ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
29
|
+
Migrating to CreateUsers (20120106063521)
|
24
30
|
[1m[35m (0.2ms)[0m select sqlite_version(*)
|
25
|
-
[1m[36m (0.
|
26
|
-
[1m[35m (0.
|
27
|
-
[1m[36m (0.0ms)[0m [1mPRAGMA index_list("schema_migrations")[0m
|
28
|
-
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
29
|
-
[1m[36m (0.1ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
30
|
-
[1m[35m (0.8ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20120106063521')
|
31
|
+
[1m[36m (0.1ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
32
|
+
[1m[35m (0.0ms)[0m PRAGMA index_list("users")
|
data/test/dummy/log/test.log
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
[1m[36m (0.0ms)[0m [1mselect sqlite_version(*)[0m
|
2
|
+
[1m[35m (2.1ms)[0m CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL)
|
3
|
+
[1m[36m (0.0ms)[0m [1mPRAGMA index_list("schema_migrations")[0m
|
4
|
+
[1m[35m (0.9ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
5
|
+
[1m[36m (0.7ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
6
|
+
Migrating to CreateUsers (20120106063521)
|
7
|
+
[1m[35m (0.3ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "password" varchar(255), "comments" text, "status" varchar(255), "misc" varchar(255), "created_at" datetime, "updated_at" datetime)
|
8
|
+
[1m[36m (0.1ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20120106063521')[0m
|
9
|
+
[1m[35m (0.2ms)[0m select sqlite_version(*)
|
10
|
+
[1m[36m (0.1ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations" [0m
|
11
|
+
[1m[35m (0.0ms)[0m PRAGMA index_list("users")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap_form
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|