Module: Uploadcare::Rails::Internal::UploaderFieldHelpers

Defined in:
lib/uploadcare/rails/internal/uploader_field_helpers.rb

Instance Method Summary collapse

Instance Method Details

#uploadcare_file_field(object_name, method_name, ctx_name: nil, solution: "regular", **options) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/uploadcare/rails/internal/uploader_field_helpers.rb', line 10

def uploadcare_file_field(object_name, method_name, ctx_name: nil, solution: "regular", **options)
  object = instance_variable_get("@#{object_name}")

  unless options.key?(:multiple)
    options[:multiple] = true if uploadcare_file_group_attribute?(object_name, method_name, object: object)
  end

  ctx_name ||= SecureRandom.uuid
  field_name = "#{object_name}[#{method_name}]"
  options[:value] = object.public_send(method_name) if !options.key?(:value) && object&.respond_to?(method_name)
  field_html = uploadcare_file_field_tag(field_name, ctx_name: ctx_name, solution: solution, **options)

  if uploadcare_object_has_errors?(object, method_name)
    uploadcare_error_wrapping(field_html)
  else
    field_html
  end
end

#uploadcare_file_field_tag(name, ctx_name: nil, solution: "regular", **options) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/uploadcare/rails/internal/uploader_field_helpers.rb', line 29

def uploadcare_file_field_tag(name, ctx_name: nil, solution: "regular", **options)
  ctx_name ||= SecureRandom.uuid
  value = options.delete(:value)

  form_input = uploadcare_form_input_tag(name: name, ctx_name: ctx_name, value: value)
  uploader = uploadcare_uploader(ctx_name: ctx_name, solution: solution, **options)

  safe_join([ form_input, uploader ])
end

#uploadcare_files_field(object_name, method_name, ctx_name: nil, solution: "regular", **options) ⇒ Object



39
40
41
42
43
44
45
46
47
# File 'lib/uploadcare/rails/internal/uploader_field_helpers.rb', line 39

def uploadcare_files_field(object_name, method_name, ctx_name: nil, solution: "regular", **options)
  uploadcare_file_field(
    object_name,
    method_name,
    ctx_name: ctx_name,
    solution: solution,
    **uploadcare_group_field_options(options)
  )
end

#uploadcare_files_field_tag(name, ctx_name: nil, solution: "regular", **options) ⇒ Object



49
50
51
52
53
54
55
56
# File 'lib/uploadcare/rails/internal/uploader_field_helpers.rb', line 49

def uploadcare_files_field_tag(name, ctx_name: nil, solution: "regular", **options)
  uploadcare_file_field_tag(
    name,
    ctx_name: ctx_name,
    solution: solution,
    **uploadcare_group_field_options(options)
  )
end