Module: Ramaze::Helper::Form

Defined in:
lib/ramaze/helper/form.rb

Instance Method Summary collapse

Instance Method Details

#form_build(tag_name, label, hash, &block) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/ramaze/helper/form.rb', line 86

def form_build(tag_name, label, hash, &block)
  name = hash[:name].to_sym
  form_id = "form-#{name}"
  opts = hash.merge(form_tabindex.merge(:id => form_id))
  error = form_errors[name.to_s]

  Ramaze::Gestalt.build do
    tr do
      td do
        label(:for => form_id){ "#{label}:" }
        span(:class => "error"){ error } if error
      end
      td do
        tag(tag_name, opts, &block)
      end
    end
  end
end

#form_checkbox(label, name, checked = false) ⇒ Object



10
11
12
13
14
# File 'lib/ramaze/helper/form.rb', line 10

def form_checkbox(label, name, checked = false)
  hash = {:type => :checkbox, :name => name}
  hash[:checked] = 'checked' if checked
  form_input(label, hash)
end

#form_error(name, message) ⇒ Object



112
113
114
# File 'lib/ramaze/helper/form.rb', line 112

def form_error(name, message)
  form_errors[name.to_s] = message.to_s
end

#form_errorsObject



116
117
118
# File 'lib/ramaze/helper/form.rb', line 116

def form_errors
  @form_errors ||= {}
end

#form_errors_from_model(obj) ⇒ Object



120
121
122
123
124
# File 'lib/ramaze/helper/form.rb', line 120

def form_errors_from_model(obj)
  obj.errors.each do |key, value|
    form_error(key, value.first % key)
  end
end

#form_file(label, name) ⇒ Object



24
25
26
# File 'lib/ramaze/helper/form.rb', line 24

def form_file(label, name)
  form_input(label, :type => :file, :name => name)
end

#form_hidden(name, value = nil) ⇒ Object



28
29
30
# File 'lib/ramaze/helper/form.rb', line 28

def form_hidden(name, value = nil)
  Ramaze::Gestalt.build{ input(:type => :hidden, :name => name, :value => value) }
end

#form_input(label, hash) ⇒ Object



82
83
84
# File 'lib/ramaze/helper/form.rb', line 82

def form_input(label, hash)
  form_build(:input, label, hash)
end

#form_password(label, name) ⇒ Object



16
17
18
# File 'lib/ramaze/helper/form.rb', line 16

def form_password(label, name)
  form_input(label, :type => :password, :name => name)
end

#form_select(label, name, values, hash = {}) ⇒ Object

Examples:

usage, normal select drop-down


form_select('Favourite colors', :colors, @colors, :selected => @color)

usage for pre-selected value


form_select('Favourite colors', :colors, @colors, :selected => @color)

usage, allow selecting multiple


form_select('Cups', :cups, @cups, :selected => @cup, :multiple => 5)


49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/ramaze/helper/form.rb', line 49

def form_select(label, name, values, hash = {})
  name = name.to_sym
  id = "form-#{name}"
  multiple, size = hash.values_at(:multiple, :size)

  s_args = {:name => name, :id => id}.merge(form_tabindex)
  s_args[:multiple] = :multiple if multiple
  s_args[:size] = (size || multiple || 1).to_i

  has_selected, selected = hash.key?(:selected), hash[:selected]
  error = form_errors[name.to_s]

  g = Ramaze::Gestalt.new
  g.tr do
    g.td do
      g.label(:for => id){ "#{label}:" }
      g.span(:class => 'error'){ error } if error
    end
    g.td do
      g.select(s_args) do
        values.each do |key, value|
          value ||= key
          o_args = {:value => value}
          o_args[:selected] = :selected if has_selected and value == selected
          g.option(o_args){ key }
        end
      end
    end
  end

  g.to_s
end

#form_submit(value = nil) ⇒ Object



32
33
34
35
36
# File 'lib/ramaze/helper/form.rb', line 32

def form_submit(value = nil)
  hash = {:type => :submit}.merge(form_tabindex)
  hash[:value] = value if value
  Ramaze::Gestalt.build{ tr{ td(:colspan => 2){ input(hash) }}}
end

#form_tabindexObject



105
106
107
108
109
110
# File 'lib/ramaze/helper/form.rb', line 105

def form_tabindex
  @tabindex ||= 0
  @tabindex += 1

  {:tabindex => @tabindex}
end

#form_text(label, name, value = nil) ⇒ Object



6
7
8
# File 'lib/ramaze/helper/form.rb', line 6

def form_text(label, name, value = nil)
  form_input(label, :type => :text, :name => name, :value => value)
end

#form_textarea(label, name, value = nil) ⇒ Object



20
21
22
# File 'lib/ramaze/helper/form.rb', line 20

def form_textarea(label, name, value = nil)
  form_build(:textarea, label, :name => name){ value }
end