add drop down list for unit preference

This commit is contained in:
Andy Brett
2020-09-07 13:26:09 -07:00
parent adb29a9c8f
commit 5a5cbbd318
3 changed files with 20 additions and 6 deletions

View File

@@ -45,14 +45,14 @@ module Spree
end
end
def preference_field_for(form, field, options)
def preference_field_for(form, field, options, object)
case options[:type]
when :integer
form.text_field(field, preference_field_options(options))
when :boolean
form.check_box(field, preference_field_options(options))
when :string
form.text_field(field, preference_field_options(options))
preference_field_for_text_field(form, field, options, object)
when :password
form.password_field(field, preference_field_options(options))
when :text
@@ -62,6 +62,16 @@ module Spree
end
end
def preference_field_for_text_field(form, field, options, object)
if field.end_with?('_from_list') && object.respond_to?("#{field}_values")
list_values = object.__send__("#{field}_values")
selected_value = object.__send__(field)
form.select(field, options_for_select(list_values, selected_value), preference_field_options(options))
else
form.text_field(field, preference_field_options(options))
end
end
def preference_field_options(options)
field_options = case options[:type]
when :integer
@@ -95,8 +105,8 @@ module Spree
return unless object.respond_to?(:preferences)
object.preferences.keys.map{ |key|
form.label("preferred_#{key}", Spree.t(key) + ": ") +
preference_field_for(form, "preferred_#{key}", type: object.preference_type(key))
form.label("preferred_#{key}", Spree.t(key.to_s.gsub("_from_list", "")) + ": ") +
preference_field_for(form, "preferred_#{key}", { type: object.preference_type(key) }, object)
}.join("<br />").html_safe
end