Skip to content

Instantly share code, notes, and snippets.

@dcalixto
Created April 22, 2016 18:46
Show Gist options
  • Select an option

  • Save dcalixto/d75d778fb4cd2586884216b8a30bf4af to your computer and use it in GitHub Desktop.

Select an option

Save dcalixto/d75d778fb4cd2586884216b8a30bf4af to your computer and use it in GitHub Desktop.
module CoasterHelper
# Add the type parameter to URL if not already there and remove if they are
def type_parameters(type, options = {})
parameters = params.dup
if params[:type] == type
# Remove type
parameters.delete(:type)
else
# Add type to new parameters variable
parameters.merge!(type: type)
end
# Merge any parameters passed in via options
parameters.merge(options)
end
# Add the letters parameter to URL if not already there and remove if they are
def letter_parameters(letters, options = {})
parameters = params.dup
if params[:letters] == letters
# Remove letters
parameters.delete(:letters)
else
# Add letters to new parameters variable
parameters.merge!(letters: letters)
end
# Merge any parameters passed in via options
parameters.merge(options)
end
# Add the misc parameter to URL if not already there and remove if they are
def misc_parameters(misc, options = {})
parameters = params.dup
if params[:misc] == misc
# Remove misc
parameters.delete(:misc)
else
# Add misc to new parameters variable
parameters.merge!(misc: misc)
end
# Merge any parameters passed in via options
parameters.merge(options)
end
# Add the sort parameter to URL
def sort_parameters(sort, options = {})
parameters = params.dup
# Add sort to new parameters variable
parameters.merge!(sort: sort)
# Merge any parameters passed in via options
parameters.merge(options)
end
end
if params[:letters] || params[:type] || params[:misc] || params[:country]
@coasters = Coaster.uniques
if params[:type]
filter_by_type
# Determine order based on whether 'letters' parameter is present
if params[:letters]
# Order by coaster name
params[:sort] = 'alphabetically' unless params[:sort]
else
# Order by park name then coaster name
params[:sort] = 'park' unless params[:sort]
end
end
if params[:letters]
filter_by_letters
# Determine order based on whether 'type' parameter is present
if params[:type]
# Order by park name then coaster name
params[:sort] = 'park' unless params[:sort]
else
# Order by coaster name
params[:sort] = 'alphabetically' unless params[:sort]
end
end
if params[:misc]
filter_by_misc
end
if params[:country]
filter_by_country
end
else
@coasters = Coaster.uniques
end
if params[:sort] == 'order'
@coasters = @coasters.except(:order).order('coasters.order_ridden ASC')
elsif params[:sort] == 'park'
@coasters = @coasters.joins(:park).order('parks.name ASC').order('coasters.name ASC')
elsif params[:sort] == 'alphabetically'
@coasters = @coasters.except(:order).order('coasters.name ASC')
else
@coasters = @coasters.joins(:park).order('coasters.name ASC').order('parks.name ASC')
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment