I have the following in my controller that will assign a different collection of results depending on what params are received with an Ajax call. It is messy and i would like to just call a function with all the logic in rather than all this in my index controller
class PublicController < ApplicationController
def index
if params[:literacy_param].present?
@skills = Skill.search(params)
elsif params[:numeracy_param].present?
@skills = Skill.numeracy_default_params
elsif params[:numeracy_number_skills].present?
@skills = Skill.numeracy_number_skills
elsif params[:numeracy_measuring_skills].present?
@skills = Skill.numeracy_measuring_skills
elsif params[:numeracy_data_skills].present?
@skills = Skill.numeracy_data_skills
else
@skills = Skill.default_params
end
end
end
Im just a bit unsure on how to set out my function so that it can read the params that are being sent,
I have come up with this so far
private
def skills(params)
if params[:literacy_param].present?
@skills = Skill.search(params)
elsif params[:numeracy_param].present?
@skills = Skill.numeracy_default_params
elsif params[:numeracy_number_skills].present?
@skills = Skill.numeracy_number_skills
elsif params[:numeracy_measuring_skills].present?
@skills = Skill.numeracy_measuring_skills
elsif params[:numeracy_data_skills].present?
@skills = Skill.numeracy_data_skills
else
@skills = Skill.default_params
end
end
Then in my index action i would do
@skills = skills(params)
would this be an efficient way?
Thanks
@skills = if condition ... endinstead of repeating@skillsall over. being DRY ;)