padrino-helpers 0.11.1 → 0.11.2

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.
@@ -24,9 +24,9 @@ module Padrino
24
24
  end
25
25
 
26
26
  # f.label :username, :caption => "Nickname"
27
- def label(field, options={})
27
+ def label(field, options={}, &block)
28
28
  options.reverse_merge!(:caption => "#{field_human_name(field)}: ")
29
- @template.label_tag(field_id(field), options)
29
+ @template.label_tag(field_id(field), options, &block)
30
30
  end
31
31
 
32
32
  # f.hidden_field :session_id, :value => "45"
@@ -271,7 +271,7 @@ module Padrino
271
271
  else
272
272
  []
273
273
  end
274
- variants.inject('') do |html, variant|
274
+ variants.inject(''.html_safe) do |html, variant|
275
275
  variant[2] = "#{field_id(field)}_#{variant[1]}"
276
276
  html << @template.label_tag("#{field_name(field)}[]", :for => variant[2], :caption => "#{yield(variant)} #{variant[0]}")
277
277
  end
@@ -248,7 +248,14 @@ module Padrino
248
248
  def error_message_on(object, field, options={})
249
249
  object = object.is_a?(Symbol) ? instance_variable_get("@#{object}") : object
250
250
  error = object.errors[field] rescue nil
251
- # Array(error).first is necessary because some ORMs give us an array others directly a value
251
+ error = if defined?(Ohm::Model) && object.is_a?(Ohm::Model)
252
+ I18n.t("ohm.errors.messages.#{error[0]}", :default => error[0].to_s)
253
+ else
254
+ # Array(error).first is necessary because some ORMs
255
+ # give us an array others directly a value
256
+ Array(error)[0]
257
+ end
258
+
252
259
  if error = Array(error)[0]
253
260
  options.reverse_merge!(:tag => :span, :class => :error)
254
261
  tag = options.delete(:tag)
@@ -213,7 +213,7 @@ module Padrino
213
213
  #
214
214
  # @example
215
215
  # tag :hr, :class => 'dotted'
216
- # # => <hr class="dotted">
216
+ # # => <hr class="dotted" />
217
217
  #
218
218
  # tag :input, :name => 'username', :type => :text
219
219
  # # => <input name="username" type="text" />
@@ -27,6 +27,7 @@ class MiniTest::Spec
27
27
  # In this case, block is the html to evaluate
28
28
  def assert_has_tag(name, attributes = {}, &block)
29
29
  html = block && block.call
30
+ assert html.html_safe?, 'html_safe? failed'
30
31
  matcher = HaveSelector.new(name, attributes)
31
32
  raise "Please specify a block!" if html.blank?
32
33
  assert matcher.matches?(html), matcher.failure_message
@@ -256,6 +256,12 @@ describe "FormBuilder" do
256
256
  assert_has_tag('label', :class => 'large', :for => 'user_first_name', :content => "F. Name: ") { actual_html }
257
257
  end
258
258
 
259
+ should "set specific content inside the label if a block was provided" do
260
+ actual_html = standard_builder.label(:admin, :class => 'large') { input_tag :checkbox }
261
+ assert_has_tag('label', :class => 'large', :for => 'user_admin', :content => "Admin: ") { actual_html }
262
+ assert_has_tag('label input[type=checkbox]') { actual_html }
263
+ end
264
+
259
265
  should "display correct label in haml" do
260
266
  visit '/haml/form_for'
261
267
  assert_have_selector '#demo label', :content => "Login: ", :class => 'user-label'
@@ -200,6 +200,12 @@ describe "FormHelpers" do
200
200
  assert_has_tag('label[for=username] span.required', :content => "*") { actual_html }
201
201
  end
202
202
 
203
+ should "display label tag in ruby with a block" do
204
+ actual_html = label_tag(:admin, :class => 'long-label') { input_tag :checkbox }
205
+ assert_has_tag(:label, :for => 'admin', :class => 'long-label', :content => "Admin") { actual_html }
206
+ assert_has_tag('label input[type=checkbox]') { actual_html }
207
+ end
208
+
203
209
  should "display label tag in erb for simple form" do
204
210
  visit '/erb/form_tag'
205
211
  assert_have_selector 'form.simple-form label', :count => 9
@@ -207,6 +213,7 @@ describe "FormHelpers" do
207
213
  assert_have_selector 'form.simple-form label', :content => "Password", :for => 'password'
208
214
  assert_have_selector 'form.simple-form label', :content => "Gender", :for => 'gender'
209
215
  end
216
+
210
217
  should "display label tag in erb for advanced form" do
211
218
  visit '/erb/form_tag'
212
219
  assert_have_selector 'form.advanced-form label', :count => 11
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: padrino-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.1
4
+ version: 0.11.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-04-07 00:00:00.000000000 Z
15
+ date: 2013-05-21 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: padrino-core
@@ -21,7 +21,7 @@ dependencies:
21
21
  requirements:
22
22
  - - '='
23
23
  - !ruby/object:Gem::Version
24
- version: 0.11.1
24
+ version: 0.11.2
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  requirements:
30
30
  - - '='
31
31
  - !ruby/object:Gem::Version
32
- version: 0.11.1
32
+ version: 0.11.2
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: i18n
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -174,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
174
174
  version: '0'
175
175
  segments:
176
176
  - 0
177
- hash: 3249284005023139295
177
+ hash: -1875793301041170039
178
178
  required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  none: false
180
180
  requirements: