formtastic-bootstrap 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. data/Gemfile +5 -3
  2. data/Gemfile.lock +72 -60
  3. data/README.md +4 -1
  4. data/Rakefile +1 -1
  5. data/VERSION +1 -1
  6. data/formtastic-bootstrap.gemspec +49 -16
  7. data/lib/formtastic-bootstrap/actions/base.rb +22 -0
  8. data/lib/formtastic-bootstrap/actions/button_action.rb +13 -0
  9. data/lib/formtastic-bootstrap/actions/input_action.rb +13 -0
  10. data/lib/formtastic-bootstrap/actions/link_action.rb +12 -0
  11. data/lib/formtastic-bootstrap/actions.rb +10 -0
  12. data/lib/formtastic-bootstrap/form_builder.rb +4 -2
  13. data/lib/formtastic-bootstrap/helpers/action_helper.rb +12 -0
  14. data/lib/formtastic-bootstrap/helpers/actions_helper.rb +24 -0
  15. data/lib/formtastic-bootstrap/helpers/fieldset_wrapper.rb +2 -4
  16. data/lib/formtastic-bootstrap/helpers/inputs_helper.rb +0 -2
  17. data/lib/formtastic-bootstrap/helpers.rb +6 -8
  18. data/lib/formtastic-bootstrap/inputs/base/choices.rb +6 -35
  19. data/lib/formtastic-bootstrap/inputs/base/collections.rb +9 -0
  20. data/lib/formtastic-bootstrap/inputs/base/grouped_collections.rb +9 -0
  21. data/lib/formtastic-bootstrap/inputs/base/hints.rb +1 -1
  22. data/lib/formtastic-bootstrap/inputs/base/labelling.rb +14 -3
  23. data/lib/formtastic-bootstrap/inputs/base/numeric.rb +9 -0
  24. data/lib/formtastic-bootstrap/inputs/base/stringish.rb +4 -5
  25. data/lib/formtastic-bootstrap/inputs/base/timeish.rb +38 -18
  26. data/lib/formtastic-bootstrap/inputs/base/wrapping.rb +22 -34
  27. data/lib/formtastic-bootstrap/inputs/base.rb +29 -6
  28. data/lib/formtastic-bootstrap/inputs/boolean_input.rb +14 -18
  29. data/lib/formtastic-bootstrap/inputs/check_boxes_input.rb +16 -11
  30. data/lib/formtastic-bootstrap/inputs/date_input.rb +3 -9
  31. data/lib/formtastic-bootstrap/inputs/date_select_input.rb +8 -0
  32. data/lib/formtastic-bootstrap/inputs/datetime_input.rb +3 -12
  33. data/lib/formtastic-bootstrap/inputs/datetime_select_input.rb +8 -0
  34. data/lib/formtastic-bootstrap/inputs/email_input.rb +1 -1
  35. data/lib/formtastic-bootstrap/inputs/file_input.rb +1 -1
  36. data/lib/formtastic-bootstrap/inputs/hidden_input.rb +1 -1
  37. data/lib/formtastic-bootstrap/inputs/number_input.rb +3 -3
  38. data/lib/formtastic-bootstrap/inputs/password_input.rb +1 -1
  39. data/lib/formtastic-bootstrap/inputs/phone_input.rb +1 -1
  40. data/lib/formtastic-bootstrap/inputs/radio_input.rb +28 -14
  41. data/lib/formtastic-bootstrap/inputs/range_input.rb +1 -1
  42. data/lib/formtastic-bootstrap/inputs/search_input.rb +1 -1
  43. data/lib/formtastic-bootstrap/inputs/select_input.rb +3 -1
  44. data/lib/formtastic-bootstrap/inputs/string_input.rb +0 -7
  45. data/lib/formtastic-bootstrap/inputs/text_input.rb +1 -1
  46. data/lib/formtastic-bootstrap/inputs/time_input.rb +3 -9
  47. data/lib/formtastic-bootstrap/inputs/time_select_input.rb +8 -0
  48. data/lib/formtastic-bootstrap/inputs/time_zone_input.rb +1 -1
  49. data/lib/formtastic-bootstrap/inputs/url_input.rb +1 -1
  50. data/lib/formtastic-bootstrap/inputs.rb +30 -23
  51. data/lib/formtastic-bootstrap.rb +16 -1
  52. data/spec/actions/button_action_spec.rb +63 -0
  53. data/spec/actions/input_action_spec.rb +59 -0
  54. data/spec/actions/link_action_spec.rb +92 -0
  55. data/spec/helpers/action_helper_spec.rb +368 -0
  56. data/spec/helpers/actions_helper_spec.rb +147 -0
  57. data/spec/helpers/input_helper_spec.rb +238 -259
  58. data/spec/helpers/inputs_helper_spec.rb +84 -25
  59. data/spec/inputs/boolean_input_spec.rb +108 -75
  60. data/spec/inputs/check_boxes_input_spec.rb +106 -91
  61. data/spec/inputs/date_select_input_spec.rb +164 -0
  62. data/spec/inputs/datetime_select_input_spec.rb +112 -0
  63. data/spec/inputs/deprecated_time_date_datetime_inputs_spec.rb +48 -0
  64. data/spec/inputs/email_input_spec.rb +30 -3
  65. data/spec/inputs/file_input_spec.rb +31 -4
  66. data/spec/inputs/hidden_input_spec.rb +63 -32
  67. data/spec/inputs/number_input_spec.rb +37 -8
  68. data/spec/inputs/password_input_spec.rb +30 -3
  69. data/spec/inputs/phone_input_spec.rb +30 -3
  70. data/spec/inputs/radio_input_spec.rb +87 -60
  71. data/spec/inputs/range_input_spec.rb +32 -5
  72. data/spec/inputs/search_input_spec.rb +29 -3
  73. data/spec/inputs/select_input_spec.rb +164 -107
  74. data/spec/inputs/string_input_spec.rb +33 -22
  75. data/spec/inputs/text_input_spec.rb +39 -14
  76. data/spec/inputs/time_select_input_spec.rb +191 -0
  77. data/spec/inputs/time_zone_input_spec.rb +17 -19
  78. data/spec/inputs/url_input_spec.rb +30 -3
  79. data/spec/spec_helper.rb +21 -15
  80. data/spec/support/custom_macros.rb +61 -228
  81. data/spec/support/fb_custom_macros.rb +23 -0
  82. metadata +109 -28
  83. data/lib/formtastic-bootstrap/helpers/buttons_helper.rb +0 -52
  84. data/spec/builder/errors_spec.rb +0 -214
  85. data/spec/helpers/buttons_helper_spec.rb +0 -149
  86. data/spec/inputs/date_input_spec.rb +0 -147
  87. data/spec/inputs/datetime_input_spec.rb +0 -101
  88. data/spec/inputs/time_input_spec.rb +0 -206
  89. data/spec/support/depracation.rb +0 -6
  90. data/spec/support/formtastic_spec_helper.rb +0 -382
@@ -1,382 +0,0 @@
1
- # This was lifted right out of Formtastic.
2
- module FormtasticSpecHelper
3
- include ActionPack
4
- include ActionView::Context if defined?(ActionView::Context)
5
- include ActionController::RecordIdentifier
6
- include ActionView::Helpers::FormHelper
7
- include ActionView::Helpers::FormTagHelper
8
- include ActionView::Helpers::FormOptionsHelper
9
- include ActionView::Helpers::UrlHelper
10
- include ActionView::Helpers::TagHelper
11
- include ActionView::Helpers::TextHelper
12
- include ActionView::Helpers::ActiveRecordHelper if defined?(ActionView::Helpers::ActiveRecordHelper)
13
- include ActionView::Helpers::ActiveModelHelper if defined?(ActionView::Helpers::ActiveModelHelper)
14
- include ActionView::Helpers::DateHelper
15
- include ActionView::Helpers::TextFieldDateHelper # I added this!
16
- include ActionView::Helpers::CaptureHelper
17
- include ActionView::Helpers::AssetTagHelper
18
- include ActiveSupport
19
- include ActionController::PolymorphicRoutes if defined?(ActionController::PolymorphicRoutes)
20
-
21
- include Formtastic::Helpers::FormHelper
22
-
23
- def default_input_type(column_type, column_name = :generic_column_name)
24
- @new_post.stub!(column_name)
25
- @new_post.stub!(:column_for_attribute).and_return(mock('column', :type => column_type)) unless column_type.nil?
26
-
27
- semantic_form_for(@new_post) do |builder|
28
- @default_type = builder.send(:default_input_type, column_name)
29
- end
30
-
31
- return @default_type
32
- end
33
-
34
- def active_model_validator(kind, attributes, options = {})
35
- validator = mock("ActiveModel::Validations::#{kind.to_s.titlecase}Validator", :attributes => attributes, :options => options)
36
- validator.stub!(:kind).and_return(kind)
37
- validator
38
- end
39
-
40
- def active_model_presence_validator(attributes, options = {})
41
- active_model_validator(:presence, attributes, options)
42
- end
43
-
44
- def active_model_length_validator(attributes, options = {})
45
- active_model_validator(:length, attributes, options)
46
- end
47
-
48
- def active_model_inclusion_validator(attributes, options = {})
49
- active_model_validator(:inclusion, attributes, options)
50
- end
51
-
52
- def active_model_numericality_validator(attributes, options = {})
53
- active_model_validator(:numericality, attributes, options)
54
- end
55
-
56
- class ::MongoPost
57
- include MongoMapper::Document if defined?(MongoMapper::Document)
58
-
59
- def id
60
- end
61
-
62
- def persisted?
63
- end
64
- end
65
-
66
-
67
- class ::Post
68
- extend ActiveModel::Naming if defined?(ActiveModel::Naming)
69
- include ActiveModel::Conversion if defined?(ActiveModel::Conversion)
70
-
71
- def id
72
- end
73
-
74
- def persisted?
75
- end
76
- end
77
-
78
- module ::Namespaced
79
- class Post
80
- extend ActiveModel::Naming if defined?(ActiveModel::Naming)
81
- include ActiveModel::Conversion if defined?(ActiveModel::Conversion)
82
-
83
- def id
84
- end
85
-
86
- def persisted?
87
- end
88
- end
89
- end
90
-
91
- class ::Author
92
- extend ActiveModel::Naming if defined?(ActiveModel::Naming)
93
- include ActiveModel::Conversion if defined?(ActiveModel::Conversion)
94
-
95
- def to_label
96
- end
97
-
98
- def persisted?
99
- end
100
- end
101
-
102
- class ::HashBackedAuthor < Hash
103
- extend ActiveModel::Naming if defined?(ActiveModel::Naming)
104
- include ActiveModel::Conversion if defined?(ActiveModel::Conversion)
105
- def persisted?; false; end
106
- def name
107
- 'hash backed author'
108
- end
109
- end
110
-
111
- class ::Continent
112
- extend ActiveModel::Naming if defined?(ActiveModel::Naming)
113
- include ActiveModel::Conversion if defined?(ActiveModel::Conversion)
114
- end
115
-
116
- class ::PostModel
117
- extend ActiveModel::Naming if defined?(ActiveModel::Naming)
118
- include ActiveModel::Conversion if defined?(ActiveModel::Conversion)
119
- end
120
-
121
- def _routes
122
- url_helpers = mock('url_helpers')
123
- url_helpers.stub!(:hash_for_posts_path).and_return({})
124
- url_helpers.stub!(:hash_for_post_path).and_return({})
125
- url_helpers.stub!(:hash_for_post_models_path).and_return({})
126
- url_helpers.stub!(:hash_for_authors_path).and_return({})
127
-
128
- mock('_routes',
129
- :url_helpers => url_helpers,
130
- :url_for => "/mock/path"
131
- )
132
- end
133
-
134
- def controller
135
- mock('controller', :controller_path= => '', :params => {})
136
- end
137
-
138
- def default_url_options
139
- {}
140
- end
141
-
142
- def mock_everything
143
-
144
- # Resource-oriented styles like form_for(@post) will expect a path method for the object,
145
- # so we're defining some here.
146
- def post_models_path(*args); "/postmodels/1"; end
147
-
148
- def post_path(*args); "/posts/1"; end
149
- def posts_path(*args); "/posts"; end
150
- def new_post_path(*args); "/posts/new"; end
151
-
152
- def author_path(*args); "/authors/1"; end
153
- def authors_path(*args); "/authors"; end
154
- def new_author_path(*args); "/authors/new"; end
155
-
156
- @fred = ::Author.new
157
- @fred.stub!(:class).and_return(::Author)
158
- @fred.stub!(:to_label).and_return('Fred Smith')
159
- @fred.stub!(:login).and_return('fred_smith')
160
- @fred.stub!(:age).and_return(27)
161
- @fred.stub!(:id).and_return(37)
162
- @fred.stub!(:new_record?).and_return(false)
163
- @fred.stub!(:errors).and_return(mock('errors', :[] => nil))
164
- @fred.stub!(:to_key).and_return(nil)
165
- @fred.stub!(:persisted?).and_return(nil)
166
- @fred.stub!(:name).and_return('Fred')
167
-
168
- @bob = ::Author.new
169
- @bob.stub!(:to_label).and_return('Bob Rock')
170
- @bob.stub!(:login).and_return('bob')
171
- @bob.stub!(:age).and_return(43)
172
- @bob.stub!(:created_at)
173
- @bob.stub!(:id).and_return(42)
174
- @bob.stub!(:posts).and_return([])
175
- @bob.stub!(:post_ids).and_return([])
176
- @bob.stub!(:new_record?).and_return(false)
177
- @bob.stub!(:errors).and_return(mock('errors', :[] => nil))
178
- @bob.stub!(:to_key).and_return(nil)
179
- @bob.stub!(:persisted?).and_return(nil)
180
- @bob.stub!(:name).and_return('Bob')
181
-
182
- @james = ::Author.new
183
- @james.stub!(:to_label).and_return('James Shock')
184
- @james.stub!(:login).and_return('james')
185
- @james.stub!(:age).and_return(38)
186
- @james.stub!(:id).and_return(75)
187
- @james.stub!(:posts).and_return([])
188
- @james.stub!(:post_ids).and_return([])
189
- @james.stub!(:new_record?).and_return(false)
190
- @james.stub!(:errors).and_return(mock('errors', :[] => nil))
191
- @james.stub!(:to_key).and_return(nil)
192
- @james.stub!(:persisted?).and_return(nil)
193
- @james.stub!(:name).and_return('James')
194
-
195
-
196
- ::Author.stub!(:scoped).and_return(::Author)
197
- ::Author.stub!(:find).and_return([@fred, @bob])
198
- ::Author.stub!(:all).and_return([@fred, @bob])
199
- ::Author.stub!(:where).and_return([@fred, @bob])
200
- ::Author.stub!(:human_attribute_name).and_return { |column_name| column_name.humanize }
201
- ::Author.stub!(:human_name).and_return('::Author')
202
- ::Author.stub!(:reflect_on_association).and_return { |column_name| mock('reflection', :options => {}, :klass => Post, :macro => :has_many) if column_name == :posts }
203
- ::Author.stub!(:content_columns).and_return([mock('column', :name => 'login'), mock('column', :name => 'created_at')])
204
- ::Author.stub!(:to_key).and_return(nil)
205
- ::Author.stub!(:persisted?).and_return(nil)
206
-
207
- @hash_backed_author = HashBackedAuthor.new
208
-
209
- # Sometimes we need a mock @post object and some Authors for belongs_to
210
- @new_post = mock('post')
211
- @new_post.stub!(:class).and_return(::Post)
212
- @new_post.stub!(:id).and_return(nil)
213
- @new_post.stub!(:new_record?).and_return(true)
214
- @new_post.stub!(:errors).and_return(mock('errors', :[] => nil))
215
- @new_post.stub!(:author).and_return(nil)
216
- @new_post.stub!(:author_attributes=).and_return(nil)
217
- @new_post.stub!(:authors).and_return([@fred])
218
- @new_post.stub!(:authors_attributes=)
219
- @new_post.stub!(:reviewer).and_return(nil)
220
- @new_post.stub!(:main_post).and_return(nil)
221
- @new_post.stub!(:sub_posts).and_return([]) #TODO should be a mock with methods for adding sub posts
222
- @new_post.stub!(:to_key).and_return(nil)
223
- @new_post.stub!(:to_model).and_return(@new_post)
224
- @new_post.stub!(:persisted?).and_return(nil)
225
-
226
- @freds_post = mock('post')
227
- @freds_post.stub!(:to_ary)
228
- @freds_post.stub!(:class).and_return(::Post)
229
- @freds_post.stub!(:to_label).and_return('Fred Smith')
230
- @freds_post.stub!(:id).and_return(19)
231
- @freds_post.stub!(:title).and_return("Hello World")
232
- @freds_post.stub!(:author).and_return(@fred)
233
- @freds_post.stub!(:author_id).and_return(@fred.id)
234
- @freds_post.stub!(:authors).and_return([@fred])
235
- @freds_post.stub!(:author_ids).and_return([@fred.id])
236
- @freds_post.stub!(:new_record?).and_return(false)
237
- @freds_post.stub!(:errors).and_return(mock('errors', :[] => nil))
238
- @freds_post.stub!(:to_key).and_return(nil)
239
- @freds_post.stub!(:persisted?).and_return(nil)
240
- @fred.stub!(:posts).and_return([@freds_post])
241
- @fred.stub!(:post_ids).and_return([@freds_post.id])
242
-
243
- ::Post.stub!(:scoped).and_return(::Post)
244
- ::Post.stub!(:human_attribute_name).and_return { |column_name| column_name.humanize }
245
- ::Post.stub!(:human_name).and_return('Post')
246
- ::Post.stub!(:reflect_on_all_validations).and_return([])
247
- ::Post.stub!(:reflect_on_validations_for).and_return([])
248
- ::Post.stub!(:reflections).and_return({})
249
- ::Post.stub!(:reflect_on_association).and_return do |column_name|
250
- case column_name
251
- when :author, :author_status
252
- mock = mock('reflection', :options => {}, :klass => ::Author, :macro => :belongs_to)
253
- mock.stub!(:[]).with(:class_name).and_return("Author")
254
- mock
255
- when :reviewer
256
- mock = mock('reflection', :options => {:class_name => 'Author'}, :klass => ::Author, :macro => :belongs_to)
257
- mock.stub!(:[]).with(:class_name).and_return("Author")
258
- mock
259
- when :authors
260
- mock('reflection', :options => {}, :klass => ::Author, :macro => :has_and_belongs_to_many)
261
- when :sub_posts
262
- mock('reflection', :options => {}, :klass => ::Post, :macro => :has_many)
263
- when :main_post
264
- mock('reflection', :options => {}, :klass => ::Post, :macro => :belongs_to)
265
- when :mongoid_reviewer
266
- mock('reflection', :options => nil, :klass => ::Author, :macro => :referenced_in, :foreign_key => "reviewer_id") # custom id
267
- end
268
- end
269
- ::Post.stub!(:find).and_return([@freds_post])
270
- ::Post.stub!(:all).and_return([@freds_post])
271
- ::Post.stub!(:where).and_return([@freds_post])
272
- ::Post.stub!(:content_columns).and_return([mock('column', :name => 'title'), mock('column', :name => 'body'), mock('column', :name => 'created_at')])
273
- ::Post.stub!(:to_key).and_return(nil)
274
- ::Post.stub!(:persisted?).and_return(nil)
275
- ::Post.stub!(:to_ary)
276
-
277
- ::MongoPost.stub!(:human_attribute_name).and_return { |column_name| column_name.humanize }
278
- ::MongoPost.stub!(:human_name).and_return('MongoPost')
279
- ::MongoPost.stub!(:associations).and_return({
280
- :sub_posts => mock('reflection', :options => {:polymorphic => true}, :klass => ::MongoPost, :macro => :has_many),
281
- :options => []
282
- })
283
- ::MongoPost.stub!(:find).and_return([@freds_post])
284
- ::MongoPost.stub!(:all).and_return([@freds_post])
285
- ::MongoPost.stub!(:where).and_return([@freds_post])
286
- ::MongoPost.stub!(:to_key).and_return(nil)
287
- ::MongoPost.stub!(:persisted?).and_return(nil)
288
- ::MongoPost.stub!(:to_ary)
289
- ::MongoPost.stub!(:model_name).and_return( mock(:model_name_mock, :singular => "post", :plural => "posts", :param_key => "post", :route_key => "posts") )
290
-
291
- @new_mm_post = mock('mm_post')
292
- @new_mm_post.stub!(:class).and_return(::MongoPost)
293
- @new_mm_post.stub!(:id).and_return(nil)
294
- @new_mm_post.stub!(:new_record?).and_return(true)
295
- @new_mm_post.stub!(:errors).and_return(mock('errors', :[] => nil))
296
- @new_mm_post.stub!(:title).and_return("Hello World")
297
- @new_mm_post.stub!(:sub_posts).and_return([]) #TODO should be a mock with methods for adding sub posts
298
- @new_mm_post.stub!(:to_key).and_return(nil)
299
- @new_mm_post.stub!(:to_model).and_return(@new_mm_post)
300
- @new_mm_post.stub!(:persisted?).and_return(nil)
301
-
302
- @mock_file = mock('file')
303
- Formtastic::FormBuilder.file_methods.each do |method|
304
- @mock_file.stub!(method).and_return(true)
305
- end
306
-
307
- @new_post.stub!(:title)
308
- @new_post.stub!(:email)
309
- @new_post.stub!(:url)
310
- @new_post.stub!(:phone)
311
- @new_post.stub!(:search)
312
- @new_post.stub!(:to_ary)
313
- @new_post.stub!(:body)
314
- @new_post.stub!(:published)
315
- @new_post.stub!(:publish_at)
316
- @new_post.stub!(:created_at)
317
- @new_post.stub!(:secret).and_return(1)
318
- @new_post.stub!(:url)
319
- @new_post.stub!(:email)
320
- @new_post.stub!(:search)
321
- @new_post.stub!(:phone)
322
- @new_post.stub!(:time_zone)
323
- @new_post.stub!(:category_name)
324
- @new_post.stub!(:allow_comments).and_return(true)
325
- @new_post.stub!(:answer_comments)
326
- @new_post.stub!(:country)
327
- @new_post.stub!(:country_subdivision)
328
- @new_post.stub!(:country_code)
329
- @new_post.stub!(:document).and_return(@mock_file)
330
- @new_post.stub!(:column_for_attribute).with(:meta_description).and_return(mock('column', :type => :string, :limit => 255))
331
- @new_post.stub!(:column_for_attribute).with(:title).and_return(mock('column', :type => :string, :limit => 50))
332
- @new_post.stub!(:column_for_attribute).with(:body).and_return(mock('column', :type => :text))
333
- @new_post.stub!(:column_for_attribute).with(:published).and_return(mock('column', :type => :boolean))
334
- @new_post.stub!(:column_for_attribute).with(:publish_at).and_return(mock('column', :type => :date))
335
- @new_post.stub!(:column_for_attribute).with(:time_zone).and_return(mock('column', :type => :string))
336
- @new_post.stub!(:column_for_attribute).with(:allow_comments).and_return(mock('column', :type => :boolean))
337
- @new_post.stub!(:column_for_attribute).with(:author).and_return(mock('column', :type => :integer))
338
- @new_post.stub!(:column_for_attribute).with(:country).and_return(mock('column', :type => :string, :limit => 255))
339
- @new_post.stub!(:column_for_attribute).with(:country_subdivision).and_return(mock('column', :type => :string, :limit => 255))
340
- @new_post.stub!(:column_for_attribute).with(:country_code).and_return(mock('column', :type => :string, :limit => 255))
341
- @new_post.stub!(:column_for_attribute).with(:email).and_return(mock('column', :type => :string, :limit => 255))
342
- @new_post.stub!(:column_for_attribute).with(:url).and_return(mock('column', :type => :string, :limit => 255))
343
- @new_post.stub!(:column_for_attribute).with(:phone).and_return(mock('column', :type => :string, :limit => 255))
344
- @new_post.stub!(:column_for_attribute).with(:search).and_return(mock('column', :type => :string, :limit => 255))
345
- @new_post.stub!(:column_for_attribute).with(:document).and_return(nil)
346
-
347
- @new_post.stub!(:author).and_return(@bob)
348
- @new_post.stub!(:author_id).and_return(@bob.id)
349
-
350
- @new_post.stub!(:reviewer).and_return(@fred)
351
- @new_post.stub!(:reviewer_id).and_return(@fred.id)
352
-
353
- @new_post.should_receive(:publish_at=).any_number_of_times
354
- @new_post.should_receive(:title=).any_number_of_times
355
- @new_post.stub!(:main_post_id).and_return(nil)
356
-
357
- end
358
-
359
- def self.included(base)
360
- base.class_eval do
361
-
362
- attr_accessor :output_buffer
363
-
364
- def protect_against_forgery?
365
- false
366
- end
367
-
368
- def _helpers
369
- FakeHelpersModule
370
- end
371
-
372
- end
373
- end
374
-
375
- def with_config(config_method_name, value, &block)
376
- old_value = FormtasticBootstrap::FormBuilder.send(config_method_name)
377
- FormtasticBootstrap::FormBuilder.send(:"#{config_method_name}=", value)
378
- yield
379
- FormtasticBootstrap::FormBuilder.send(:"#{config_method_name}=", old_value)
380
- end
381
-
382
- end