Sunday 15 September 2013

Only show fields that have content in Ruby on Rails -



Only show fields that have content in Ruby on Rails -

i have app has product model , product has next attributes:

t.string :name t.string :info t.string :purpose t.string :properties_sheen t.string :properties_color t.string :properties_solids t.string :properties_coverage t.string :properties_thickness t.string :properties_flashpoint t.string :properties_voc t.string :application_ratio t.string :application_thinner t.string :application_method t.string :application_cleaning t.string :conditions_touch_5 t.string :conditions_touch_23 t.string :conditions_touch_30 t.string :conditions_hard_5 t.string :conditions_hard_23 t.string :conditions_hard_30 t.string :conditions_refloatation t.string :conditions_interval_min_5 t.string :conditions_interval_min_23 t.string :conditions_interval_min_30 t.string :conditions_interval_max t.string :coating_spec t.string :surface_prep t.string :storage t.string :pack_size

on product page these fall groups. illustration properties includes attributes 'properties_' in etc.

what best way me show fields have content in besides applying '.present?' logic every attribute?

i have created product helpers groups seek , remove finish sections have no content doesn't seem rails-y me sure there's improve way.

def any_applications_present? unless @product.application_ratio.present? || @product.application_thinner.present? || @product.application_method.present? || @product.application_cleaning.present? homecoming false else homecoming true end end

given app simple , feature perhaps 20 products maximum keen maintain backend as simple storing in single products table ideally.

any advice much appreciated :)

**** illustration products show view ***** .row .col-sm-12 %h3 properties %p sheen: %span = @product.properties_sheen %p color: %span = @product.properties_color

you can seek this:

# in product.rb def has_applications? [:ratio, :thinner, :method, :cleaning].any? |method| send("application_#{method}").present? end end

then phone call on model:

@product.has_application? # returns true or false

ruby-on-rails ruby ruby-on-rails-3 model logic

No comments:

Post a Comment