auto_form 0.0.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 (2) hide show
  1. data/lib/auto_form.rb +31 -0
  2. metadata +67 -0
data/lib/auto_form.rb ADDED
@@ -0,0 +1,31 @@
1
+ require 'action_pack'
2
+
3
+ class ActionController::Base
4
+ def self.auto_form(model,method)
5
+ action_name = "#{method}_#{model.name.underscore}"
6
+ Rails.logger.info "\n\n\n#{action_name}"
7
+ define_method(action_name) { |*args|
8
+ form_erb = "<%= form_for(@params, :as => \"#{method}_args\", :url => { :action => params[:action] }) do |f| %>\
9
+ <% @params.class.args.keys.each { |a| %>\
10
+ <%= f.send(@params.class.args[a][:field_type],a) %><br/>\
11
+ <% } %>\
12
+ <%= f.submit \"Submit\" %>\
13
+ <% end %>"
14
+ args_class = model.const_get(method.to_s.camelize + "Args")
15
+ if request.post?
16
+ @params = args_class.new(params["#{method}_args"]) # compliant with ActiveModel API
17
+ status, message = model.new.approve(@params)
18
+ if status
19
+ flash[:notice] = "#{model}##{method} successful"
20
+ redirect_to '/'
21
+ else
22
+ flash.now[:error] = "#{model}##{method} failed: #{message.errors.first.join('-')}"
23
+ render :layout => true, :inline => form_erb
24
+ end
25
+ else
26
+ @params = args_class.new
27
+ render :layout => true, :inline => form_erb
28
+ end
29
+ }
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: auto_form
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Nilesh Trivedi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-10-23 00:00:00 +05:30
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: validated_arguments
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ description: Use validated_arguments to know metadata about method arguments and the ActiveModel compliant API to build the form
28
+ email:
29
+ - github@nileshtrivedi.com
30
+ executables: []
31
+
32
+ extensions: []
33
+
34
+ extra_rdoc_files: []
35
+
36
+ files:
37
+ - lib/auto_form.rb
38
+ has_rdoc: true
39
+ homepage: http://github.com/nileshtrivedi/auto_form
40
+ licenses: []
41
+
42
+ post_install_message:
43
+ rdoc_options: []
44
+
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: "0"
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "0"
59
+ requirements: []
60
+
61
+ rubyforge_project:
62
+ rubygems_version: 1.5.1
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: Auto-generate get/post actions and form for any method in Rails controllers
66
+ test_files: []
67
+