Module: Anaconda::FormBuilderHelpers
- Defined in:
- lib/anaconda/form_builder_helpers.rb
Defined Under Namespace
Classes: S3Uploader
Instance Method Summary collapse
Instance Method Details
#anaconda(anaconda_field_name, form_options = {}) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/anaconda/form_builder_helpers.rb', line 4 def anaconda( anaconda_field_name, = {} ) output = "" instance = nil = {} element_id = "anaconda_file_#{anaconda_field_name}" if self.class == SimpleForm::FormBuilder instance = self.object a_class = self.object.class unless self.object.kind_of? Class begin = a_class.[anaconda_field_name.to_sym].dup rescue raise AnacondaError, "attribute options not set for column #{anaconda_field_name}. Did you add `anaconda_for :#{anaconda_field_name}` to the model?" end [:base_key] = instance.send([:base_key].to_s) if [:base_key].kind_of? Symbol uploader = S3Uploader.new() output += self.input_field "file", name: "file", id: element_id, as: :file, data: {url: uploader.url, form_data: uploader.fields.to_json, media_types: Anaconda.js_file_types} end output += self.hidden_field "#{anaconda_field_name}_filename".to_sym output += self.hidden_field "#{anaconda_field_name}_file_path".to_sym output += self.hidden_field "#{anaconda_field_name}_size".to_sym output += self.hidden_field "#{anaconda_field_name}_original_filename".to_sym output += self.hidden_field "#{anaconda_field_name}_stored_privately".to_sym output += self.hidden_field "#{anaconda_field_name}_type".to_sym # output += render(:template =>"anaconda/_uploader_form_for.html.haml", :locals => {resource: instance, options: options.merge(as: anaconda_field_name, form_options: form_options, element_id: element_id )}, layout: false).to_s = .merge(as: anaconda_field_name, form_options: , element_id: element_id ) output += "<div id=\"\#{instance.class.to_s.underscore}_\#{anaconda_field_name}_details\"></div>\n\n<script>\n (function() {\nwindow.uploader = new AnacondaUploadField({\n element_id: \"#\#{options[:element_id]}\",\n base_key: \"\#{options[:base_key]}\",\n allowed_types: \#{options[:allowed_file_types].collect{ |i| i.to_s }},\n upload_details_container: \"\#{options[:form_options][:upload_details_container]}\",\n upload_automatically: \"\#{options[:form_options][:auto_upload]}\",\n submit_automatically: \"\#{options[:form_options][:auto_submit]}\",\n resource: \"\#{instance.class.to_s.underscore}\",\n attribute: \"\#{options[:as]}\"\n});\n }).call(this);\n</script>\n\n END\n\n output.html_safe\nend\n" |