padrino-helpers 0.10.2 → 0.10.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +3 -3
- data/.yardopts +1 -0
- data/{LICENSE → LICENSE.txt} +0 -0
- data/README.rdoc +3 -3
- data/lib/padrino-helpers.rb +21 -14
- data/lib/padrino-helpers/asset_tag_helpers.rb +163 -34
- data/lib/padrino-helpers/form_builder/abstract_form_builder.rb +1 -1
- data/lib/padrino-helpers/form_helpers.rb +287 -134
- data/lib/padrino-helpers/format_helpers.rb +135 -17
- data/lib/padrino-helpers/locale/lv.yml +103 -0
- data/lib/padrino-helpers/locale/zh_cn.yml +1 -1
- data/lib/padrino-helpers/number_helpers.rb +73 -59
- data/lib/padrino-helpers/output_helpers.rb +59 -15
- data/lib/padrino-helpers/output_helpers/abstract_handler.rb +15 -20
- data/lib/padrino-helpers/output_helpers/erb_handler.rb +12 -15
- data/lib/padrino-helpers/output_helpers/haml_handler.rb +10 -14
- data/lib/padrino-helpers/output_helpers/slim_handler.rb +10 -14
- data/lib/padrino-helpers/render_helpers.rb +23 -7
- data/lib/padrino-helpers/tag_helpers.rb +41 -16
- data/lib/padrino-helpers/translation_helpers.rb +14 -0
- data/test/fixtures/markup_app/views/content_for.erb +3 -0
- data/test/fixtures/markup_app/views/content_for.haml +3 -0
- data/test/fixtures/markup_app/views/content_for.slim +3 -0
- data/test/helper.rb +3 -15
- data/test/test_asset_tag_helpers.rb +1 -1
- data/test/test_form_builder.rb +3 -5
- data/test/test_form_helpers.rb +1 -1
- data/test/test_format_helpers.rb +1 -1
- data/test/test_locale.rb +1 -1
- data/test/test_number_helpers.rb +1 -1
- data/test/test_output_helpers.rb +22 -2
- data/test/test_render_helpers.rb +1 -1
- data/test/test_tag_helpers.rb +1 -1
- metadata +10 -8
data/.document
CHANGED
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--title 'Padrino Helpers Documentation' --protected
|
data/{LICENSE → LICENSE.txt}
RENAMED
File without changes
|
data/README.rdoc
CHANGED
@@ -34,7 +34,8 @@ Added to a template, this will capture the includes from the block and allow the
|
|
34
34
|
...
|
35
35
|
|
36
36
|
This will automatically insert the contents of the block (in this case a stylesheet include) into the
|
37
|
-
location the content is yielded within the layout.
|
37
|
+
location the content is yielded within the layout. You can also check if content exists for a block using
|
38
|
+
<tt>content_for?(true)</tt> which returns true if content exists.
|
38
39
|
|
39
40
|
The capture_html and the concat_content methods allow content to be manipulated and stored for use in building
|
40
41
|
additional helpers accepting blocks or displaying information in a template. One example is the use of
|
@@ -183,8 +184,7 @@ For more information on using the Padrino form builders, check out the guide for
|
|
183
184
|
=== Format Helpers
|
184
185
|
|
185
186
|
Format helpers are several useful utilities for manipulating the format of text to achieve a goal.
|
186
|
-
The four format helpers are <tt>escape_html</tt>, <tt>
|
187
|
-
and <tt>js_escape_html</tt>.
|
187
|
+
The four format helpers are <tt>escape_html</tt>, <tt>time_ago_in_words</tt>, and <tt>js_escape_html</tt>.
|
188
188
|
|
189
189
|
The escape_html and js_escape_html function are for taking an html string and escaping certain characters.
|
190
190
|
<tt>escape_html</tt> will escape ampersands, brackets and quotes to their HTML/XML entities. This is useful
|
data/lib/padrino-helpers.rb
CHANGED
@@ -15,25 +15,32 @@ I18n.load_path += Dir["#{File.dirname(__FILE__)}/padrino-helpers/locale/*.yml"]
|
|
15
15
|
|
16
16
|
module Padrino
|
17
17
|
##
|
18
|
-
# This component provides a
|
18
|
+
# This component provides a variety of view helpers related to html markup generation.
|
19
19
|
# There are helpers for generating tags, forms, links, images, and more.
|
20
20
|
# Most of the basic methods should be very familiar to anyone who has used rails view helpers.
|
21
21
|
#
|
22
22
|
module Helpers
|
23
|
-
##
|
24
|
-
# Register these helpers:
|
25
|
-
#
|
26
|
-
# Padrino::Helpers::OutputHelpers
|
27
|
-
# Padrino::Helpers::TagHelpers
|
28
|
-
# Padrino::Helpers::AssetTagHelpers
|
29
|
-
# Padrino::Helpers::FormHelpers
|
30
|
-
# Padrino::Helpers::FormatHelpers
|
31
|
-
# Padrino::Helpers::RenderHelpers
|
32
|
-
# Padrino::Helpers::NumberHelpers
|
33
|
-
#
|
34
|
-
# for Padrino::Application
|
35
|
-
#
|
36
23
|
class << self
|
24
|
+
##
|
25
|
+
# Registers these helpers into your application:
|
26
|
+
#
|
27
|
+
# Padrino::Helpers::OutputHelpers
|
28
|
+
# Padrino::Helpers::TagHelpers
|
29
|
+
# Padrino::Helpers::AssetTagHelpers
|
30
|
+
# Padrino::Helpers::FormHelpers
|
31
|
+
# Padrino::Helpers::FormatHelpers
|
32
|
+
# Padrino::Helpers::RenderHelpers
|
33
|
+
# Padrino::Helpers::NumberHelpers
|
34
|
+
#
|
35
|
+
# @param [Sinatra::Application] app
|
36
|
+
# The specified padrino application
|
37
|
+
#
|
38
|
+
# @example Register the helper module
|
39
|
+
# require 'padrino-helpers'
|
40
|
+
# class Padrino::Appliocation
|
41
|
+
# register Padrino::Helpers
|
42
|
+
# end
|
43
|
+
#
|
37
44
|
def registered(app)
|
38
45
|
app.set :default_builder, 'StandardFormBuilder'
|
39
46
|
app.helpers Padrino::Helpers::OutputHelpers
|
@@ -4,10 +4,18 @@ module Padrino
|
|
4
4
|
##
|
5
5
|
# Creates a div to display the flash of given type if it exists
|
6
6
|
#
|
7
|
-
#
|
8
|
-
#
|
7
|
+
# @param [Symbol] kind
|
8
|
+
# The type of flash to display in the tag.
|
9
|
+
# @param [Hash] options
|
10
|
+
# The html options for this section.
|
11
|
+
#
|
12
|
+
# @return [String] Flash tag html with specified +options+.
|
13
|
+
#
|
14
|
+
# @example
|
9
15
|
# flash_tag(:notice, :id => 'flash-notice')
|
16
|
+
# # Generates: <div class="notice">flash-notice</div>
|
10
17
|
#
|
18
|
+
# @api public
|
11
19
|
def flash_tag(kind, options={})
|
12
20
|
flash_text = flash[kind]
|
13
21
|
return '' if flash_text.blank?
|
@@ -18,16 +26,40 @@ module Padrino
|
|
18
26
|
##
|
19
27
|
# Creates a link element with given name, url and options
|
20
28
|
#
|
21
|
-
#
|
22
|
-
#
|
29
|
+
# @overload link_to(caption, url, options={})
|
30
|
+
# @param [String] caption The text caption.
|
31
|
+
# @param [String] url The url href.
|
32
|
+
# @param [Hash] options The html options.
|
33
|
+
# @overload link_to(url, options={}, &block)
|
34
|
+
# @param [String] url The url href.
|
35
|
+
# @param [Hash] options The html options.
|
36
|
+
# @param [Proc] block The link content.
|
37
|
+
#
|
38
|
+
# @option options [String] :anchor
|
39
|
+
# The anchor for the link (i.e #something)
|
40
|
+
# @option options [Boolean] :if
|
41
|
+
# If true, the link will appear, otherwise not;
|
42
|
+
# @option options [Boolean] :unless
|
43
|
+
# If false, the link will appear, otherwise not;
|
44
|
+
# @option options [Boolean] :remote
|
45
|
+
# If true, this link should be handled by a ajax ujs handler.
|
46
|
+
# @option options [String] :confirm
|
47
|
+
# Instructs ujs handler to alert confirm message.
|
48
|
+
# @option options [Symbol] :method
|
49
|
+
# Instructs ujs handler to use different http method (i.e :post, :delete).
|
50
|
+
#
|
51
|
+
# @return [String] Link tag html with specified +options+.
|
52
|
+
#
|
53
|
+
# @example
|
23
54
|
# link_to('click me', '/dashboard', :class => 'linky')
|
24
55
|
# link_to('click me', '/dashboard', :remote => true)
|
25
56
|
# link_to('click me', '/dashboard', :method => :delete)
|
26
|
-
# link_to('click me', :class => 'blocky') do
|
57
|
+
# link_to('click me', :class => 'blocky') do; end
|
27
58
|
#
|
28
59
|
# Note that you can pass :+if+ or :+unless+ conditions, but if you provide :current as
|
29
60
|
# condition padrino return true/false if the request.path_info match the given url
|
30
61
|
#
|
62
|
+
# @api public
|
31
63
|
def link_to(*args, &block)
|
32
64
|
options = args.extract_options!
|
33
65
|
options = parse_js_attributes(options) # parses remote, method and confirm options
|
@@ -51,15 +83,33 @@ module Padrino
|
|
51
83
|
##
|
52
84
|
# Creates a form containing a single button that submits to the url.
|
53
85
|
#
|
54
|
-
#
|
55
|
-
#
|
86
|
+
# @overload button_to(name, url, options={})
|
87
|
+
# @param [String] caption The text caption.
|
88
|
+
# @param [String] url The url href.
|
89
|
+
# @param [Hash] options The html options.
|
90
|
+
# @overload button_to(name, options={}, &block)
|
91
|
+
# @param [String] url The url href.
|
92
|
+
# @param [Hash] options The html options.
|
93
|
+
# @param [Proc] block The button content.
|
94
|
+
#
|
95
|
+
# @option options [Boolean] :multipart
|
96
|
+
# If true, this form will support multipart encoding.
|
97
|
+
# @option options [String] :remote
|
98
|
+
# Instructs ujs handler to handle the submit as ajax.
|
99
|
+
# @option options [Symbol] :method
|
100
|
+
# Instructs ujs handler to use different http method (i.e :post, :delete).
|
101
|
+
#
|
102
|
+
# @return [String] Form and button html with specified +options+.
|
103
|
+
#
|
104
|
+
# @example
|
105
|
+
# button_to 'Delete', url(:accounts_destroy, :id => account), :method => :delete, :class => :form
|
56
106
|
# # Generates:
|
57
107
|
# # <form class="form" action="/admin/accounts/destroy/2" method="post">
|
58
108
|
# # <input type="hidden" value="delete" name="_method" />
|
59
109
|
# # <input type="submit" value="Delete" />
|
60
110
|
# # </form>
|
61
|
-
# button_to 'Delete', url(:accounts_destroy, :id => account), :method => :delete, :class => :form
|
62
111
|
#
|
112
|
+
# @api public
|
63
113
|
def button_to(*args, &block)
|
64
114
|
name, url = args[0], args[1]
|
65
115
|
options = args.extract_options!
|
@@ -76,34 +126,56 @@ module Padrino
|
|
76
126
|
##
|
77
127
|
# Creates a link tag that browsers and news readers can use to auto-detect an RSS or ATOM feed.
|
78
128
|
#
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
82
|
-
#
|
83
|
-
#
|
84
|
-
#
|
85
|
-
#
|
86
|
-
#
|
87
|
-
#
|
129
|
+
# @param [Symbol] mime
|
130
|
+
# The mime type of the feed (i.e :atom or :rss).
|
131
|
+
# @param [String] url
|
132
|
+
# The url for the feed tag to reference.
|
133
|
+
# @param[Hash] options
|
134
|
+
# The options for the feed tag.
|
135
|
+
# @option options [String] :rel ("alternate")
|
136
|
+
# Specify the relation of this link
|
137
|
+
# @option options [String] :type
|
138
|
+
# Override the auto-generated mime type
|
139
|
+
# @option options [String] :title
|
140
|
+
# Specify the title of the link, defaults to the type
|
141
|
+
#
|
142
|
+
# @return [String] Feed link html tag with specified +options+.
|
143
|
+
#
|
144
|
+
# @example
|
88
145
|
# feed_tag :atom, url(:blog, :posts, :format => :atom), :title => "ATOM"
|
89
|
-
# # Generates: <link type="application/
|
146
|
+
# # Generates: <link type="application/atom+xml" rel="alternate" href="/blog/posts.atom" title="ATOM" />
|
90
147
|
# feed_tag :rss, url(:blog, :posts, :format => :rss)
|
148
|
+
# # Generates: <link type="application/rss+xml" rel="alternate" href="/blog/posts.rss" title="rss" />
|
91
149
|
#
|
150
|
+
# @api public
|
92
151
|
def feed_tag(mime, url, options={})
|
93
152
|
full_mime = (mime == :atom) ? 'application/atom+xml' : 'application/rss+xml'
|
94
153
|
content_tag(:link, options.reverse_merge(:rel => 'alternate', :type => full_mime, :title => mime, :href => url))
|
95
154
|
end
|
96
155
|
|
97
156
|
##
|
98
|
-
# Creates a mail link element with given name and caption
|
99
|
-
#
|
100
|
-
#
|
101
|
-
#
|
157
|
+
# Creates a mail link element with given name and caption.
|
158
|
+
#
|
159
|
+
# @param [String] email
|
160
|
+
# The email address for the link.
|
161
|
+
# @param [String] caption
|
162
|
+
# The caption for the link.
|
163
|
+
# @param [Hash] mail_options
|
164
|
+
# The options for the mail link. Accepts html options.
|
165
|
+
# @option mail_options [String] cc The cc recipients.
|
166
|
+
# @option mail_options [String] bcc The bcc recipients.
|
167
|
+
# @option mail_options [String] subject The subject line.
|
168
|
+
# @option mail_options [String] body The email body.
|
169
|
+
#
|
170
|
+
# @return [String] Mail link html tag with specified +options+.
|
171
|
+
#
|
172
|
+
# @example
|
102
173
|
# # Generates: <a href="mailto:me@demo.com">me@demo.com</a>
|
103
174
|
# mail_to "me@demo.com"
|
104
175
|
# # Generates: <a href="mailto:me@demo.com">My Email</a>
|
105
176
|
# mail_to "me@demo.com", "My Email"
|
106
177
|
#
|
178
|
+
# @api public
|
107
179
|
def mail_to(email, caption=nil, mail_options={})
|
108
180
|
html_options = mail_options.slice!(:cc, :bcc, :subject, :body)
|
109
181
|
mail_query = Rack::Utils.build_query(mail_options).gsub(/\+/, '%20').gsub('%40', '@')
|
@@ -112,16 +184,23 @@ module Padrino
|
|
112
184
|
end
|
113
185
|
|
114
186
|
##
|
115
|
-
# Creates a meta element with the content and given options
|
187
|
+
# Creates a meta element with the content and given options.
|
188
|
+
#
|
189
|
+
# @param [String] content
|
190
|
+
# The content for the meta tag.
|
191
|
+
# @param [Hash] options
|
192
|
+
# The html options for the meta tag.
|
116
193
|
#
|
117
|
-
#
|
194
|
+
# @return [String] Meta html tag with specified +options+.
|
118
195
|
#
|
196
|
+
# @example
|
119
197
|
# # Generates: <meta name="keywords" content="weblog,news">
|
120
198
|
# meta_tag "weblog,news", :name => "keywords"
|
121
199
|
#
|
122
200
|
# # Generates: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
123
201
|
# meta_tag "text/html; charset=UTF-8", 'http-equiv' => "Content-Type"
|
124
202
|
#
|
203
|
+
# @api public
|
125
204
|
def meta_tag(content, options={})
|
126
205
|
options.reverse_merge!("content" => content)
|
127
206
|
tag(:meta, options)
|
@@ -130,14 +209,21 @@ module Padrino
|
|
130
209
|
##
|
131
210
|
# Generates a favicon link. looks inside images folder
|
132
211
|
#
|
133
|
-
#
|
212
|
+
# @param [String] source
|
213
|
+
# The source image path for the favicon link tag.
|
214
|
+
# @param [Hash] options
|
215
|
+
# The html options for the favicon link tag.
|
134
216
|
#
|
217
|
+
# @return [String] The favicon link html tag with specified +options+.
|
218
|
+
#
|
219
|
+
# @example
|
135
220
|
# favicon_tag 'favicon.png'
|
136
221
|
# favicon_tag 'icons/favicon.png'
|
137
222
|
# # or override some options
|
138
223
|
# favicon_tag 'favicon.png', :type => 'image/ico'
|
139
224
|
#
|
140
|
-
|
225
|
+
# @api public
|
226
|
+
def favicon_tag(source, options={})
|
141
227
|
type = File.extname(source).gsub('.','')
|
142
228
|
options = options.dup.reverse_merge!(:href => image_path(source), :rel => 'icon', :type => "image/#{type}")
|
143
229
|
tag(:link, options)
|
@@ -146,10 +232,17 @@ module Padrino
|
|
146
232
|
##
|
147
233
|
# Creates an image element with given url and options
|
148
234
|
#
|
149
|
-
#
|
235
|
+
# @param [String] url
|
236
|
+
# The source path for the image tag.
|
237
|
+
# @param [Hash] options
|
238
|
+
# The html options for the image tag.
|
239
|
+
#
|
240
|
+
# @return [String] Image html tag with +url+ and specified +options+.
|
150
241
|
#
|
242
|
+
# @example
|
151
243
|
# image_tag('icons/avatar.png')
|
152
244
|
#
|
245
|
+
# @api public
|
153
246
|
def image_tag(url, options={})
|
154
247
|
options.reverse_merge!(:src => image_path(url))
|
155
248
|
tag(:img, options)
|
@@ -157,13 +250,19 @@ module Padrino
|
|
157
250
|
|
158
251
|
##
|
159
252
|
# Returns an html script tag for each of the sources provided.
|
160
|
-
# You can pass in the filename without extension or a symbol and we search it in your +appname.
|
253
|
+
# You can pass in the filename without extension or a symbol and we search it in your +appname.public_folder+
|
161
254
|
# like app/public/stylesheets for inclusion. You can provide also a full path.
|
162
255
|
#
|
163
|
-
#
|
256
|
+
# @overload stylesheet_link_tag(*sources, options={})
|
257
|
+
# @param [Array<String>] sources Splat of css source paths
|
258
|
+
# @param [Hash] options The html options for the link tag
|
259
|
+
#
|
260
|
+
# @return [String] Stylesheet link html tag for +sources+ with specified +options+.
|
164
261
|
#
|
262
|
+
# @example
|
165
263
|
# stylesheet_link_tag 'style', 'application', 'layout'
|
166
264
|
#
|
265
|
+
# @api public
|
167
266
|
def stylesheet_link_tag(*sources)
|
168
267
|
options = sources.extract_options!.symbolize_keys
|
169
268
|
options.reverse_merge!(:media => 'screen', :rel => 'stylesheet', :type => 'text/css')
|
@@ -174,13 +273,19 @@ module Padrino
|
|
174
273
|
|
175
274
|
##
|
176
275
|
# Returns an html script tag for each of the sources provided.
|
177
|
-
# You can pass in the filename without extension or a symbol and we search it in your +appname.
|
276
|
+
# You can pass in the filename without extension or a symbol and we search it in your +appname.public_folder+
|
178
277
|
# like app/public/javascript for inclusion. You can provide also a full path.
|
179
278
|
#
|
180
|
-
#
|
279
|
+
# @overload javascript_include_tag(*sources, options={})
|
280
|
+
# @param [Array<String>] sources Splat of js source paths
|
281
|
+
# @param [Hash] options The html options for the script tag
|
181
282
|
#
|
283
|
+
# @return [String] Script tag for +sources+ with specified +options+.
|
284
|
+
#
|
285
|
+
# @example
|
182
286
|
# javascript_include_tag 'application', :extjs
|
183
287
|
#
|
288
|
+
# @api public
|
184
289
|
def javascript_include_tag(*sources)
|
185
290
|
options = sources.extract_options!.symbolize_keys
|
186
291
|
options.reverse_merge!(:type => 'text/javascript', :content => "")
|
@@ -190,14 +295,19 @@ module Padrino
|
|
190
295
|
end
|
191
296
|
|
192
297
|
##
|
193
|
-
# Returns the path to the image, either relative or absolute. We search it in your +appname.
|
298
|
+
# Returns the path to the image, either relative or absolute. We search it in your +appname.public_folder+
|
194
299
|
# like app/public/images for inclusion. You can provide also a full path.
|
195
300
|
#
|
196
|
-
#
|
301
|
+
# @param [String] src
|
302
|
+
# The path to the image file (relative or absolute)
|
303
|
+
#
|
304
|
+
# @return [String] Path to an image given the +kind+ and +source+.
|
197
305
|
#
|
306
|
+
# @example
|
198
307
|
# # Generates: /images/foo.jpg?1269008689
|
199
308
|
# image_path("foo.jpg")
|
200
309
|
#
|
310
|
+
# @api public
|
201
311
|
def image_path(src)
|
202
312
|
asset_path(:images, src)
|
203
313
|
end
|
@@ -205,8 +315,14 @@ module Padrino
|
|
205
315
|
##
|
206
316
|
# Returns the path to the specified asset (css or javascript)
|
207
317
|
#
|
208
|
-
#
|
318
|
+
# @param [String] kind
|
319
|
+
# The kind of asset (i.e :images, :js, :css)
|
320
|
+
# @param [String] source
|
321
|
+
# The path to the asset (relative or absolute).
|
209
322
|
#
|
323
|
+
# @return [String] Path for the asset given the +kind+ and +source+.
|
324
|
+
#
|
325
|
+
# @example
|
210
326
|
# # Generates: /javascripts/application.js?1269008689
|
211
327
|
# asset_path :js, :application
|
212
328
|
#
|
@@ -216,6 +332,7 @@ module Padrino
|
|
216
332
|
# # Generates: /images/example.jpg?1269008689
|
217
333
|
# asset_path :images, 'example.jpg'
|
218
334
|
#
|
335
|
+
# @api semipublic
|
219
336
|
def asset_path(kind, source)
|
220
337
|
return source if source =~ /^http/
|
221
338
|
asset_folder = case kind
|
@@ -237,6 +354,9 @@ module Padrino
|
|
237
354
|
##
|
238
355
|
# Returns the uri root of the application.
|
239
356
|
#
|
357
|
+
# @example
|
358
|
+
# uri_root_path("/some/path") => "/base/some/path"
|
359
|
+
#
|
240
360
|
def uri_root_path(*paths)
|
241
361
|
root_uri = self.class.uri_root if self.class.respond_to?(:uri_root)
|
242
362
|
File.join(ENV['RACK_BASE_URI'].to_s, root_uri || '/', *paths)
|
@@ -245,6 +365,9 @@ module Padrino
|
|
245
365
|
##
|
246
366
|
# Returns the timestamp mtime for an asset
|
247
367
|
#
|
368
|
+
# @example
|
369
|
+
# asset_timestamp("some/path/to/file.png") => "?154543678"
|
370
|
+
#
|
248
371
|
def asset_timestamp(file_path)
|
249
372
|
return nil if file_path =~ /\?/ || (self.class.respond_to?(:asset_stamp) && !self.class.asset_stamp)
|
250
373
|
public_path = Padrino.root("public", file_path) if Padrino.respond_to?(:root)
|
@@ -256,6 +379,9 @@ module Padrino
|
|
256
379
|
##
|
257
380
|
# Parses link_to options for given correct conditions
|
258
381
|
#
|
382
|
+
# @example
|
383
|
+
# parse_conditions("/some/url", :if => false) => true
|
384
|
+
#
|
259
385
|
def parse_conditions(url, options)
|
260
386
|
if options.has_key?(:if)
|
261
387
|
condition = options.delete(:if)
|
@@ -271,6 +397,9 @@ module Padrino
|
|
271
397
|
# Parses link_to options for given js declarations (remote, method, confirm)
|
272
398
|
# Not destructive on options; returns updated options
|
273
399
|
#
|
400
|
+
# parse_js_attributes(:remote => true, :confirm => "test", :method => :delete)
|
401
|
+
# => { "data-remote" => true, "data-method" => "delete", "data-confirm" => "test" }
|
402
|
+
#
|
274
403
|
def parse_js_attributes(options)
|
275
404
|
options = options.dup
|
276
405
|
options["data-remote"] = "true" if options.delete(:remote)
|
@@ -9,7 +9,7 @@ module Padrino
|
|
9
9
|
@object = build_object(object)
|
10
10
|
@options = options
|
11
11
|
raise "FormBuilder template must be initialized!" unless template
|
12
|
-
raise "FormBuilder object must
|
12
|
+
raise "FormBuilder object must not be a nil value. If there's no object, use a symbol instead! (i.e :user)" unless object
|
13
13
|
end
|
14
14
|
|
15
15
|
# f.error_messages
|