From ad76e669446f0e601bdb498d83236ca03385bef4 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Thu, 22 Nov 2012 11:24:05 +1100 Subject: [PATCH] angular_options_for_select --- app/helpers/angular_form_builder.rb | 18 ------------------ app/helpers/angular_form_helper.rb | 16 ++++++++++++++++ app/helpers/enterprise_fees_helper.rb | 2 +- .../admin/enterprise_fees/index.html.haml | 13 ++++++------- 4 files changed, 23 insertions(+), 26 deletions(-) create mode 100644 app/helpers/angular_form_helper.rb diff --git a/app/helpers/angular_form_builder.rb b/app/helpers/angular_form_builder.rb index 007462dccc..63785b0d31 100644 --- a/app/helpers/angular_form_builder.rb +++ b/app/helpers/angular_form_builder.rb @@ -23,22 +23,4 @@ class AngularFormBuilder < ActionView::Helpers::FormBuilder def angular_select(method, choices, options = {}, html_options = {}) # ... end - - def angular_options_for_select(container, selected = nil) - return container if String === container - - selected, disabled = extract_selected_and_disabled(selected).map do | r | - Array.wrap(r).map { |item| item.to_s } - end - - container.map do |element| - html_attributes = option_html_attributes(element) - text, value = option_text_and_value(element).map { |item| item.to_s } - selected_attribute = %Q( ng-selected="#{selected}") if selected - disabled_attribute = ' disabled="disabled"' if disabled && option_value_selected?(value, disabled) - %() - end.join("\n").html_safe - - - end end diff --git a/app/helpers/angular_form_helper.rb b/app/helpers/angular_form_helper.rb new file mode 100644 index 0000000000..02c086f8eb --- /dev/null +++ b/app/helpers/angular_form_helper.rb @@ -0,0 +1,16 @@ +module AngularFormHelper + def angular_options_for_select(container, angular_field=nil) + return container if String === container + + container.map do |element| + html_attributes = option_html_attributes(element) + text, value = option_text_and_value(element).map { |item| item.to_s } + selected_attribute = %Q( ng-selected="#{angular_field} == '#{value}'") if angular_field + %() + end.join("\n").html_safe + end +end + +class ActionView::Helpers::InstanceTag + include AngularFormHelper +end diff --git a/app/helpers/enterprise_fees_helper.rb b/app/helpers/enterprise_fees_helper.rb index 2399a1737e..b7ec2b9018 100644 --- a/app/helpers/enterprise_fees_helper.rb +++ b/app/helpers/enterprise_fees_helper.rb @@ -1,5 +1,5 @@ module EnterpriseFeesHelper - def enterprise_fee_options + def enterprise_fee_type_options EnterpriseFee::FEE_TYPES.map { |f| [f.capitalize, f] } end end diff --git a/app/views/admin/enterprise_fees/index.html.haml b/app/views/admin/enterprise_fees/index.html.haml index fa6a3d4af4..69175778f6 100644 --- a/app/views/admin/enterprise_fees/index.html.haml +++ b/app/views/admin/enterprise_fees/index.html.haml @@ -17,32 +17,31 @@ %th Calculator values %th %tbody - -# -- Finished product - = enterprise_fee_set_form.angular_fields_for :collection do |f| # regular fields_for collection.first ?? + / -- Finished product + = enterprise_fee_set_form.angular_fields_for :collection do |f| %tr{'ng-repeat' => 'enterprise_fee in enterprise_fees'} %td=# f.collection_select :enterprise_id, Enterprise.all, :id, :name, :include_blank => true %td=# f.angular_select :fee_type, enterprise_fee_options %td= f.angular_text_field :name %td=# f.collection_select :calculator_type, @calculators, :name, :description, {}, {:class => 'calculator_type'} - -# -- Manual HTML / form_tag + / -- Manual HTML / form_tag %tr{'ng-repeat' => 'enterprise_fee in enterprise_fees'} %td %select{:id => 'enterprise_fee_set_collection_attributes_{{ $index }}_enterprise_id', :name => "enterprise_fee_set[collection_attributes][{{ $index }}][enterprise_id]", 'ng-model' => 'enterprise_fee'} %option{:value => ""} - Enterprise.all.each do |enterprise| %option{:value => enterprise.id, 'ng-selected' => "enterprise_fee.enterprise_id == #{enterprise.id}"}= enterprise.name - %td - {{ enterprise_fee.fee_type }} + %td= select_tag :fee_type, angular_options_for_select(enterprise_fee_type_options, 'enterprise_fee.fee_type') %td= text_field_tag 'enterprise_fee_set[collection_attributes][{{ $index }}][name]', '{{ enterprise_fee.name }}', :id => 'enterprise_fee_set_collection_attributes_{{ $index }}_name' %td {{ enterprise_fee.calculator_type }} - -# -- Plain old Rails + / -- Plain old Rails = enterprise_fee_set_form.fields_for :collection do |f| - enterprise_fee = f.object %tr %td= f.collection_select :enterprise_id, Enterprise.all, :id, :name, :include_blank => true - %td= f.select :fee_type, enterprise_fee_options + %td= f.select :fee_type, enterprise_fee_type_options %td= f.text_field :name %td= f.collection_select :calculator_type, @calculators, :name, :description, {}, {:class => 'calculator_type'} %td