auto_form 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+