formgen 0.2.0 → 0.2.1

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 (4) hide show
  1. data/README.rdoc +130 -4
  2. data/VERSION +1 -1
  3. data/formgen.gemspec +1 -1
  4. metadata +3 -3
@@ -33,6 +33,9 @@
33
33
  has_many :bars
34
34
  belongs_to :baz
35
35
 
36
+ has_many :others
37
+ belongs_to :something
38
+
36
39
  accepts_nested_attributes_for :bars
37
40
  accepts_nested_attributes_for :baz
38
41
 
@@ -49,14 +52,137 @@
49
52
  app/views/foos/_bar_fields.html.erb
50
53
  app/views/foos/_baz_fields.html.erb
51
54
 
55
+ == Static Files
56
+
57
+ * public/javascripts/jquery.add_remove_links.js
58
+ * app/helpers/add_remove_links_helper.rb
59
+
60
+
61
+ == Generated Files and Examples
62
+
63
+ Based on Foo example above.
64
+
65
+ * app/helpers/foo_setup_helper.rb
66
+ * app/views/foos/new.html.erb
67
+ * app/views/foos/edit.html.erb
68
+ * app/views/foos/_form.html.erb
69
+ * app/views/foos/_bar_fields.html.erb
70
+ * app/views/foos/_baz_fields.html.erb
71
+
72
+ === Examples:
73
+
74
+ ==== app/helpers/foo_setup_helper.rb
75
+ module FooSetupHelper
76
+ def setup_foo(obj)
77
+ obj.build_baz if obj.baz.blank?
78
+ obj.bars.build if obj.bars.empty?
79
+ return obj
80
+ end
81
+
82
+ def build_select_list(assoc, options={})
83
+ name = options[:name] || "name"
84
+ scope = options[:scope] || "all"
85
+ begin
86
+ # name and id associations
87
+ assoc.to_s.classify.constantize.send(scope).map{|a| [a.send(name), a.id]}
88
+ rescue
89
+ # use id for text and value
90
+ assoc.to_s.classify.constantize.send(scope).map(&:id)
91
+ end
92
+ end
93
+ end
94
+
95
+ ==== app/views/foos/new.html.erb
96
+
97
+ <h1>New foo</h1>
98
+ <%= render 'form' %>
99
+ <%= link_to 'back', :back %>
100
+
101
+ ==== app/views/foos/edit.html.erb
102
+
103
+ <h1>Editing foo</h1>
104
+ <%= render 'form' %>
105
+ <%= link_to 'back', :back %>
106
+
107
+ ==== app/views/foos/_form.html.erb
108
+
109
+ <%= form_for setup_foo(@foo), :html => { :multipart => true } do |f| %>
110
+ <% if @foo.errors.any? %>
111
+ <div id="errorExplanation">
112
+ <h2><%= pluralize(@foo.errors.count, "error") %> prohibited this foo from being saved:</h2>
113
+ <ul>
114
+ <% @foo.errors.full_messages.each do |msg| %>
115
+ <li><%= msg %></li>
116
+ <% end %>
117
+ </ul>
118
+ </div>
119
+ <% end %>
120
+ <div class="field">
121
+ <%= f.label :name %>
122
+ <%= f.text_field :name %>
123
+ </div>
124
+ <div class="field">
125
+ <%= f.label :description %>
126
+ <%= f.text_area :description %>
127
+ </div>
128
+ <div class="field">
129
+ <%= f.label :image %>
130
+ <%= f.file_field :image %>
131
+ </div>
132
+ <div class="field">
133
+ <%= f.label :other_ids, "Others" %>
134
+ <%= f.select :other_ids, build_select_list(:others), {:prompt => "Please select"}, {:multiple => true, :size => 4} %>
135
+ </div>
136
+ <div class="field">
137
+ <%= f.label :something_id, "Something" %>
138
+ <%= f.select :something_id, build_select_list(:something), {:prompt => "Please select one"} %>
139
+ </div>
140
+ <%= f.fields_for :baz do |nf| %>
141
+ <%= render 'baz_fields', :f => nf %>
142
+ <% end %>
143
+ <%= f.fields_for :bars do |nf| %>
144
+ <%= render 'bar_fields', :f => nf %>
145
+ <% end %>
146
+ <%= link_to_add_fields "Add bar", f, :bars %>
147
+ <%= f.submit "Save" %>
148
+ <% end %>
149
+ <%= content_for :head do %>
150
+ <%= javascript_include_tag 'jquery.add_remove_links.js' %>
151
+ <% end %>
152
+
153
+ ==== app/views/foos/_bar_fields.html.erb
154
+
155
+ <div class="fields">
156
+ <div class="field">
157
+ <%= f.label :name %>
158
+ <%= f.text_field :name %>
159
+ </div>
160
+ <div class="field">
161
+ <%= f.label :bar %>
162
+ <%= f.text_field :bar %>
163
+ </div>
164
+ <%= link_to_remove_fields "remove", f %>
165
+ </div>
166
+
167
+ ==== app/views/foos/_baz_fields.html.erb
168
+
169
+ <div class="fields">
170
+ <div class="field">
171
+ <%= f.label :name %>
172
+ <%= f.text_field :name %>
173
+ </div>
174
+ <div class="field">
175
+ <%= f.label :image %>
176
+ <%= f.file_field :image %>
177
+ </div>
178
+ </div>
179
+
52
180
 
53
181
  == FAQ
54
182
 
55
- * I'm getting this error:
56
-
57
- undefined method `setup_something' for #<#<Class:
183
+ * I'm getting this error: "undefined method `setup_something' for ...":
58
184
 
59
- Make sure the generated helper is being loaded - restart your rails server.
185
+ Make sure the generated helper is being loaded - restart your rails server.
60
186
 
61
187
 
62
188
  == Contributing to formgen
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{formgen}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Pullmonkey"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formgen
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 21
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 0
10
- version: 0.2.0
9
+ - 1
10
+ version: 0.2.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Pullmonkey