restfulx 1.2.2 → 1.2.3

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 (48) hide show
  1. data/README.rdoc +1 -1
  2. data/Rakefile +3 -1
  3. data/VERSION.yml +1 -1
  4. data/app_generators/rx_app/rx_app_generator.rb +2 -2
  5. data/app_generators/rx_app/templates/actionscript.properties +1 -1
  6. data/app_generators/rx_app/templates/actionscriptair.properties +1 -1
  7. data/app_generators/rx_app/templates/mainapp-config.xml +1 -0
  8. data/app_generators/rx_app/templates/mainapp.mxml +1 -1
  9. data/app_generators/rx_app/templates/restfulx.yml +26 -5
  10. data/lib/restfulx.rb +1 -1
  11. data/lib/restfulx/active_foo.rb +5 -2
  12. data/lib/restfulx/active_record_uuid_helper.rb +1 -1
  13. data/lib/restfulx/configuration.rb +15 -4
  14. data/lib/restfulx/rails/schema_to_yaml.rb +0 -11
  15. data/lib/restfulx/rails/schema_to_yaml/settings/core.rb +4 -1
  16. data/lib/restfulx/rails/swf_helper.rb +7 -3
  17. data/lib/restfulx/tasks.rb +0 -1
  18. data/rails_generators/rx_config/rx_config_generator.rb +16 -7
  19. data/rails_generators/rx_config/templates/actionscript.properties +1 -1
  20. data/rails_generators/rx_config/templates/actionscriptair.properties +1 -1
  21. data/rails_generators/rx_config/templates/mainapp-config.xml +1 -0
  22. data/rails_generators/rx_config/templates/restfulx.erb +45 -8
  23. data/rails_generators/rx_config/templates/restfulx.yml +4 -4
  24. data/rails_generators/rx_config/templates/session_store_flash.erb +1 -0
  25. data/rails_generators/rx_main_app/rx_main_app_generator.rb +2 -2
  26. data/rails_generators/rx_main_app/templates/mainapp.mxml +1 -1
  27. data/rails_generators/rx_scaffold/rx_scaffold_generator.rb +15 -6
  28. data/rails_generators/rx_scaffold/templates/controllers/resource_controller.rb.erb +2 -2
  29. data/rails_generators/rx_scaffold/templates/functional_test.rb +45 -0
  30. data/rails_generators/rx_scaffold/templates/helper_test.rb +4 -0
  31. data/rails_generators/rx_scaffold/templates/layouts/default.erb +7 -5
  32. data/rails_generators/rx_scaffold/templates/migration.rb.erb +4 -4
  33. data/rxgen_generators/rx_config/rx_config_generator.rb +2 -0
  34. data/rxgen_generators/rx_controller/templates/assist.py +1 -1
  35. data/rxgen_generators/rx_main_app/rx_main_app_generator.rb +2 -2
  36. data/rxgen_generators/rx_main_app/templates/mainapp.mxml +1 -1
  37. data/rxgen_generators/rx_scaffold/rx_scaffold_generator.rb +56 -9
  38. data/rxgen_generators/rx_scaffold/templates/{component.mxml.erb → layouts/default.erb} +56 -10
  39. data/rxgen_generators/rx_scaffold/templates/model.as.erb +33 -2
  40. data/test/rails/controllers/{application.rb → application_controller.rb} +0 -0
  41. data/test/rails/helpers/functional_test_helper.rb +1 -1
  42. data/test/rails/helpers/test_helper.rb +1 -8
  43. data/test/rails/helpers/unit_test_helper.rb +2 -3
  44. data/test/rails/test_active_foo.rb +1 -1
  45. data/test/rails/test_rails_integration_functional.rb +1 -1
  46. data/test/rails/test_to_fxml.rb +1 -1
  47. data/test/rails/test_to_json.rb +1 -1
  48. metadata +59 -73
@@ -0,0 +1 @@
1
+ ActionController::Dispatcher.middleware.use FlashSessionCookieMiddleware, ActionController::Base.session_options[:key]
@@ -43,8 +43,8 @@ class RxMainAppGenerator < Rails::Generator::Base
43
43
  end
44
44
 
45
45
  @component_names = []
46
- if File.exists?("#{flex_root}/#{base_folder}/components/generated")
47
- @component_names = list_mxml_files("#{flex_root}/#{base_folder}/components/generated")
46
+ if File.exists?("#{flex_root}/#{base_folder}/views/generated")
47
+ @component_names = list_mxml_files("#{flex_root}/#{base_folder}/views/generated")
48
48
  end
49
49
  end
50
50
 
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <mx:<%= application_tag %> xmlns:mx="http://www.adobe.com/2006/mxml"
3
- xmlns:generated="<%= base_package %>.components.generated.*"
3
+ xmlns:generated="<%= base_package %>.views.generated.*"
4
4
  paddingBottom="8" paddingLeft="8" paddingRight="8" paddingTop="8"
5
5
  layout="horizontal" styleName="plain" initialize="init()">
6
6
  <mx:Script>
@@ -139,11 +139,11 @@ class RxScaffoldGenerator < Rails::Generator::NamedBase
139
139
 
140
140
  if @layout.size > 0
141
141
  m.template "layouts/#{@layout}.erb",
142
- File.join("#{@flex_root}", base_folder, "components", "generated", "#{@class_name}Box.mxml"),
142
+ File.join("#{@flex_root}", base_folder, "views", "generated", "#{@class_name}Box.mxml"),
143
143
  :assigns => { :resource_controller_name => "#{file_name.pluralize}" }
144
144
  else
145
145
  m.template "layouts/#{RxSettings.layouts.default}.erb",
146
- File.join("#{@flex_root}", base_folder, "components", "generated", "#{@class_name}Box.mxml"),
146
+ File.join("#{@flex_root}", base_folder, "views", "generated", "#{@class_name}Box.mxml"),
147
147
  :assigns => { :resource_controller_name => "#{file_name.pluralize}" }
148
148
  end
149
149
 
@@ -155,11 +155,20 @@ class RxScaffoldGenerator < Rails::Generator::NamedBase
155
155
  unless options[:skip_migration]
156
156
  FileUtils.rm Dir.glob("db/migrate/[0-9]*_create_#{file_path.gsub(/\//, '_').pluralize}.rb"), :force => true
157
157
  m.migration_template 'migration.rb.erb', 'db/migrate', :assigns => {
158
- :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}"
158
+ :migration_name => "Create#{file_path.gsub(/\//, '_').pluralize.camelcase.gsub(/::/, '')}"
159
159
  }, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}" unless options[:flex_only]
160
160
  end
161
-
162
- m.route_resources controller_file_name
161
+
162
+ m.directory(File.join('test/functional', controller_class_path))
163
+ m.directory(File.join('test/unit', class_path))
164
+ m.directory(File.join('test/unit/helpers', class_path))
165
+
166
+ m.template('functional_test.rb', File.join('test/functional', controller_class_path, "#{controller_file_name}_controller_test.rb"))
167
+ m.template('helper_test.rb', File.join('test/unit/helpers', controller_class_path, "#{controller_file_name}_helper_test.rb"))
168
+
169
+ if File.open('config/routes.rb').grep(/^\s*map.resources :#{controller_file_name}/).empty?
170
+ m.route_resources controller_file_name
171
+ end
163
172
 
164
173
  m.dependency 'rx_controller', [name] + @args, :collision => :force
165
174
  end
@@ -230,4 +239,4 @@ class RxScaffoldGenerator < Rails::Generator::NamedBase
230
239
  opt.on("-fv", "--flex-view-only", "Only generate the Flex component files",
231
240
  "Default: false") { |v| options[:flex_view_only] = v }
232
241
  end
233
- end
242
+ end
@@ -10,8 +10,8 @@ class <%= controller_class_name %>Controller < ResourceController::Base
10
10
  update.failure.wants.fxml { render :fxml => @object.errors }
11
11
  destroy.wants.fxml { render :fxml => @object }
12
12
 
13
- private
14
-
13
+ private
14
+
15
15
  def collection
16
16
  @collection = end_of_association_chain.all
17
17
  end
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+
3
+ class <%= controller_class_name %>ControllerTest < ActionController::TestCase
4
+ test "should get index" do
5
+ get :index
6
+ assert_response :success
7
+ assert_not_nil assigns(:<%= table_name %>)
8
+ end
9
+
10
+ test "should get new" do
11
+ get :new
12
+ assert_response :success
13
+ end
14
+
15
+ test "should create <%= file_name %>" do
16
+ assert_difference('<%= class_name %>.count') do
17
+ post :create, :<%= file_name %> => { }
18
+ end
19
+
20
+ assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
21
+ end
22
+
23
+ test "should show <%= file_name %>" do
24
+ get :show, :id => <%= table_name %>(:one).id
25
+ assert_response :success
26
+ end
27
+
28
+ test "should get edit" do
29
+ get :edit, :id => <%= table_name %>(:one).id
30
+ assert_response :success
31
+ end
32
+
33
+ test "should update <%= file_name %>" do
34
+ put :update, :id => <%= table_name %>(:one).id, :<%= file_name %> => { }
35
+ assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
36
+ end
37
+
38
+ test "should destroy <%= file_name %>" do
39
+ assert_difference('<%= class_name %>.count', -1) do
40
+ delete :destroy, :id => <%= table_name %>(:one).id
41
+ end
42
+
43
+ assert_redirected_to <%= table_name %>_path
44
+ end
45
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class <%= controller_class_name %>HelperTest < ActionView::TestCase
4
+ end
@@ -9,12 +9,14 @@
9
9
  import <%= base_package %>.models.<%= model.camelcase %>;
10
10
  <% end -%>
11
11
  <% if attachment_field.size > 0 -%>
12
+ import flash.net.FileReference;
12
13
  import org.restfulx.utils.RxFileReference;
13
14
  <% end -%>
14
15
 
15
16
  [Bindable]
16
17
  private var <%= class_name.dcfirst %>:<%= class_name %> = new <%= class_name %>();
17
18
  <% if attachment_field.size > 0 -%>
19
+
18
20
  [Bindable]
19
21
  private var fileName:String = "None selected";
20
22
 
@@ -83,10 +85,10 @@
83
85
 
84
86
  private function chooseFile():void {
85
87
  file = new RxFileReference("<%= attachment_field[0].camelcase(:lower) %>");
86
- file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
87
- file.addEventListener(Event.SELECT, selectFile, false, 0, true);
88
- file.addEventListener(Event.CANCEL, cancelBrowse, false, 0, true);
89
- file.browse();
88
+ file.reference.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
89
+ file.reference.addEventListener(Event.SELECT, selectFile, false, 0, true);
90
+ file.reference.addEventListener(Event.CANCEL, cancelBrowse, false, 0, true);
91
+ file.reference.browse();
90
92
  }
91
93
 
92
94
  private function selectFile(event:Event):void {
@@ -98,7 +100,7 @@
98
100
  }
99
101
 
100
102
  private function fileSelected(event:Event):void {
101
- fileName = RxFileReference(event.target).name;
103
+ fileName = FileReference(event.target).name;
102
104
  }
103
105
 
104
106
  private function ioErrorHandler(event:Event):void {
@@ -19,10 +19,10 @@ class <%= migration_name %> < ActiveRecord::Migration
19
19
  <% if attachment_field.size > 0 -%>
20
20
  <% if RxSettings.attachment_plugin == 'paperclip' -%>
21
21
  # For paperclip
22
- t.column :avatar_file_name, :string
23
- t.column :avatar_content_type, :string
24
- t.column :avatar_file_size, :integer
25
- t.column :avatar_updated_at, :datetime
22
+ t.column :<%= attachment_field[0] %>_file_name, :string
23
+ t.column :<%= attachment_field[0] %>_content_type, :string
24
+ t.column :<%= attachment_field[0] %>_file_size, :integer
25
+ t.column :<%= attachment_field[0] %>_updated_at, :datetime
26
26
  <% elsif RxSettings.attachment_plugin == 'attachment_fu' -%>
27
27
  # For attachment_fu
28
28
  t.column :parent_id, :integer
@@ -14,6 +14,8 @@ class RxConfigGenerator < RubiGen::Base
14
14
  open(framework_destination_file, "wb").write(open(framework_distribution_url).read)
15
15
  puts "done. saved to #{framework_destination_file}"
16
16
  end
17
+
18
+ m.dependency 'rx_controller', @args
17
19
  end
18
20
  end
19
21
  end
@@ -27,7 +27,7 @@ import datetime, iso8601
27
27
 
28
28
  # Some useful module methods
29
29
  def all(model):
30
- items = "".join(str(item.to_xml()) for item in model.all())
30
+ items = "".join(str(item.to_xml().encode('UTF-8')) for item in model.all())
31
31
  if items == "":
32
32
  return '<entities type="array"/>'
33
33
  else:
@@ -32,8 +32,8 @@ class RxMainAppGenerator < RubiGen::Base
32
32
  end
33
33
 
34
34
  @component_names = []
35
- if File.exists?("#{flex_root}/#{base_folder}/components/generated")
36
- @component_names = list_mxml_files("#{flex_root}/#{base_folder}/components/generated")
35
+ if File.exists?("#{flex_root}/#{base_folder}/views/generated")
36
+ @component_names = list_mxml_files("#{flex_root}/#{base_folder}/views/generated")
37
37
  end
38
38
 
39
39
  @controller_names = []
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <mx:<%= application_tag %> xmlns:mx="http://www.adobe.com/2006/mxml"
3
- xmlns:generated="<%= base_package %>.components.generated.*"
3
+ xmlns:generated="<%= base_package %>.views.generated.*"
4
4
  paddingBottom="8" paddingLeft="8" paddingRight="8" paddingTop="8"
5
5
  layout="horizontal" styleName="plain" initialize="init()">
6
6
  <mx:Script>
@@ -70,7 +70,14 @@ class RxScaffoldGenerator < RubiGen::Base
70
70
 
71
71
  attr_reader :belongs_tos,
72
72
  :has_manies,
73
- :has_ones
73
+ :has_ones,
74
+ :attachment_field,
75
+ :has_many_through,
76
+ :polymorphic,
77
+ :tree_model,
78
+ :layout,
79
+ :ignored_fields,
80
+ :args_for_generation
74
81
 
75
82
  attr_reader :name,
76
83
  :class_name,
@@ -98,9 +105,15 @@ class RxScaffoldGenerator < RubiGen::Base
98
105
  File.join("#{flex_root}", base_folder, "models", "#{@class_name}.as"),
99
106
  :assigns => { :resource_controller_name => "#{file_name.pluralize}" }
100
107
 
101
- m.template 'component.mxml.erb',
102
- File.join("#{flex_root}", base_folder, "components", "generated", "#{@class_name}Box.mxml"),
103
- :assigns => { :resource_controller_name => "#{file_name.pluralize}" }
108
+ if @layout.size > 0
109
+ m.template "layouts/#{@layout}.erb",
110
+ File.join("#{@flex_root}", base_folder, "views", "generated", "#{@class_name}Box.mxml"),
111
+ :assigns => { :resource_controller_name => "#{file_name.pluralize}" }
112
+ else
113
+ m.template "layouts/#{RxSettings.layouts.default}.erb",
114
+ File.join("#{@flex_root}", base_folder, "views", "generated", "#{@class_name}Box.mxml"),
115
+ :assigns => { :resource_controller_name => "#{file_name.pluralize}" }
116
+ end
104
117
 
105
118
  if options[:gae]
106
119
  m.template 'controller.py.erb', "app/controllers/#{file_name.pluralize}.py"
@@ -113,23 +126,57 @@ class RxScaffoldGenerator < RubiGen::Base
113
126
 
114
127
  protected
115
128
  def extract_relationships
129
+ # arrays
116
130
  @belongs_tos = []
117
131
  @has_ones = []
118
132
  @has_manies = []
119
- # Figure out has_one, has_many and belongs_to based on args
133
+ @attachment_field = []
134
+ @polymorphic = []
135
+ @tree_model = []
136
+ @layout = []
137
+ @ignored_fields = []
138
+
139
+ # hashes
140
+ @has_many_through = {}
141
+
120
142
  @args.each do |arg|
143
+ # arrays
121
144
  if arg =~ /^has_one:/
122
- # arg = "has_one:arg1,arg2", so all the has_one are together
123
145
  @has_ones = arg.split(':')[1].split(',')
124
146
  elsif arg =~ /^has_many:/
125
- # arg = "has_many:arg1,arg2", so all the has_many are together
126
147
  @has_manies = arg.split(":")[1].split(",")
127
- elsif arg =~ /^belongs_to:/ # belongs_to:arg1,arg2
148
+ elsif arg =~ /^belongs_to:/
128
149
  @belongs_tos = arg.split(":")[1].split(',')
150
+ elsif arg =~ /^attachment_field:/
151
+ @attachment_field = arg.split(":")[1].split(',')
152
+ elsif arg =~ /^polymorphic:/
153
+ @polymorphic = arg.split(":")[1].split(',')
154
+ elsif arg =~ /^tree_model:/
155
+ @tree_model = arg.split(":")[1].split(',')
156
+ elsif arg =~ /^layout:/
157
+ @layout = arg.split(":")[1].split(',')
158
+ elsif arg =~ /^ignored_fields:/
159
+ @ignored_fields = arg.split(":")[1].split(',')
160
+ # hashes
161
+ elsif arg =~ /^has_many_through:/
162
+ hmt_arr = arg.split(":")[1].split(',')
163
+ @has_many_through[hmt_arr.first] = hmt_arr.last
129
164
  end
130
165
  end
131
166
 
132
- @args.delete_if { |elt| elt =~ /^(has_one|has_many|belongs_to):/ }
167
+ # delete special fields from @args ivar
168
+ %w(has_one has_many belongs_to attachment_field has_many_through
169
+ polymorphic tree_model layout ignored_fields).each do |special_field|
170
+ @args.delete_if { |f| f =~ /^(#{special_field}):/ }
171
+ end
172
+
173
+ @args_for_generation = @args.clone
174
+
175
+ # delete ignored_fields from @args ivar
176
+ @ignored_fields.each do |ignored|
177
+ @args.delete_if { |f| f =~ /^(#{ignored}):/ }
178
+ end
179
+
133
180
  end
134
181
 
135
182
  def attributes
@@ -8,9 +8,20 @@
8
8
  <% for model in belongs_tos -%>
9
9
  import <%= base_package %>.models.<%= model.camelcase %>;
10
10
  <% end -%>
11
+ <% if attachment_field.size > 0 -%>
12
+ import flash.net.FileReference;
13
+ import org.restfulx.utils.RxFileReference;
14
+ <% end -%>
11
15
 
12
16
  [Bindable]
13
17
  private var <%= class_name.dcfirst %>:<%= class_name %> = new <%= class_name %>();
18
+ <% if attachment_field.size > 0 -%>
19
+
20
+ [Bindable]
21
+ private var fileName:String = "None selected";
22
+
23
+ private var file:RxFileReference;
24
+ <% end -%>
14
25
 
15
26
  private function new<%= class_name %>():void {
16
27
  <%= class_name.dcfirst %> = new <%= class_name %>();
@@ -41,36 +52,64 @@
41
52
  <% else -%>
42
53
  <%= class_name.dcfirst %>.<%= attribute.flex_name %> = <%= attribute.flex_type %>(<%= attribute.flex_name %>TextInput.text);
43
54
  <% end -%>
44
- <% end -%>
45
-
55
+ <% end -%>
46
56
  <% for model in belongs_tos -%>
47
57
  <%= class_name.dcfirst %>.<%= model.camelcase(:lower) %> = <%= model.camelcase %>(<%= model.camelcase(:lower) %>ComboBox.selectedItem);
58
+ <% end -%>
59
+ <% if attachment_field.size > 0 -%>
60
+ <%= class_name.dcfirst %>.attachment = file;
48
61
  <% end -%>
49
62
  }
50
-
63
+
51
64
  private function destroy<%= class_name %>():void {
52
65
  <%= class_name.dcfirst %>.destroy({onSuccess: on<%= class_name %>Destroy});
53
66
  }
54
-
67
+
55
68
  private function on<%= class_name %>Select():void {
56
69
  <%= class_name.dcfirst %> = RxUtils.clone(<%= class_name.dcfirst.pluralize %>List.selectedItem) as <%= class_name %>;
57
70
  }
58
-
71
+
59
72
  private function on<%= class_name %>Create(result:<%= class_name %>):void {
60
73
  <%= class_name.dcfirst %> = new <%= class_name %>;
61
74
  }
62
-
75
+
63
76
  private function on<%= class_name %>Update(result:<%= class_name %>):void {
64
77
  <%= class_name.dcfirst.pluralize %>List.selectedItem = result;
65
78
  on<%= class_name %>Select();
66
79
  }
67
-
80
+
68
81
  private function on<%= class_name %>Destroy(result:<%= class_name %>):void {
69
82
  on<%= class_name %>Create(result);
83
+ }
84
+ <% if attachment_field.size > 0 -%>
85
+
86
+ private function chooseFile():void {
87
+ file = new RxFileReference("<%= attachment_field[0].camelcase(:lower) %>");
88
+ file.reference.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
89
+ file.reference.addEventListener(Event.SELECT, selectFile, false, 0, true);
90
+ file.reference.addEventListener(Event.CANCEL, cancelBrowse, false, 0, true);
91
+ file.reference.browse();
92
+ }
93
+
94
+ private function selectFile(event:Event):void {
95
+ fileSelected(event)
96
+ }
97
+
98
+ private function cancelBrowse(event:Event):void {
99
+ file = null;
70
100
  }
101
+
102
+ private function fileSelected(event:Event):void {
103
+ fileName = FileReference(event.target).name;
104
+ }
105
+
106
+ private function ioErrorHandler(event:Event):void {
107
+ fileChooser.errorString = "Failed to selected a file. Please try again.";
108
+ }
109
+ <% end -%>
71
110
  ]]></mx:Script>
72
111
  <mx:Panel id="<%= class_name.dcfirst.pluralize %>Panel"
73
- title="<%= class_name.pluralize %>" cornerRadius="0" dropShadowEnabled="false" borderStyle="solid"
112
+ title="<%= class_name.pluralize %>" cornerRadius="0" dropShadowEnabled="false" borderStyle="solid"
74
113
  borderThickness="1" backgroundColor="#EEEEEE" width="25%" height="100%">
75
114
  <mx:List id="<%= class_name.dcfirst.pluralize %>List"
76
115
  width="100%" height="100%"
@@ -81,7 +120,7 @@
81
120
  click="new<%= class_name %>()"/>
82
121
  </mx:ControlBar>
83
122
  </mx:Panel>
84
- <mx:Panel title="Edit <%= class_name %>" cornerRadius="0" dropShadowEnabled="false" borderStyle="solid"
123
+ <mx:Panel title="Edit <%= class_name %>" cornerRadius="0" dropShadowEnabled="false" borderStyle="solid"
85
124
  borderThickness="1" backgroundColor="#EEEEEE" width="75%" height="100%">
86
125
  <mx:Form width="100%" height="100%">
87
126
  <% for attribute in attributes -%>
@@ -101,12 +140,19 @@
101
140
  <% end -%>
102
141
  </mx:FormItem>
103
142
  <% end -%>
143
+ <% if attachment_field.size > 0 -%>
144
+ <mx:FormItem label="<%= attachment_field[0].camelcase %>:" width="100%" id="fileChooser">
145
+ <mx:Button label="Browse…" id="fileBrowseButton" click="chooseFile()"/>
146
+ <mx:Label text="{fileName}" maxWidth="190"/>
147
+ <mx:Image source="{<%= class_name.dcfirst %>.attachmentUrl}"/>
148
+ </mx:FormItem>
149
+ <% end -%>
104
150
  <% for model in belongs_tos -%>
105
151
  <mx:FormItem label="<%= model.camelcase %>" width="100%">
106
152
  <mx:ComboBox id="<%= model.camelcase(:lower) %>ComboBox" width="200"
107
153
  labelField="{<%= model.camelcase %>.LABEL}"
108
154
  dataProvider="{Rx.models.index(<%= model.camelcase %>)}" prompt="<%= model.camelcase %> ..."
109
- selectedItem="{<%= class_name.dcfirst %>.<%= model.camelcase(:lower) %>}" />
155
+ selectedItem="{<%= class_name.dcfirst %>.<%= model.camelcase(:lower) %>}"/>
110
156
  </mx:FormItem>
111
157
  <% end -%>
112
158
  </mx:Form>