I have an array of hashes - @profiles which has data as:
[{:user_id=>5, :full_name=>"Emily Spot"},{:user_id=>7, :full_name=>"Kevin Walls"}] I want to get full_name of say user_id = 7? I'm doing the following: but it's throwing an error that expression @profiles.find{|h| h[':user_id'] == current_user.id} is nil.
name = @profiles.find{ |h| h[':user_id'] == current_user.id }[':full_name'] if I use select instead of find then error is - no implicit conversion of String into Integer.
How do I search through the array of hashes?
UPDATE:
After @Eric's answer, I restructured my job model & view actions:
def full_names profile_arr||= [] profile_arr = self.applications.pluck(:user_id) @profiles = Profile.where(:user_id => profile_arr).select([:user_id, :first_name, :last_name]).map {|e| {user_id: e.user_id, full_name: e.full_name} } @full_names = @profiles.each_with_object({}) do |profile, names| names[profile[:user_id]] = profile[:full_name] end end In the view....,
p @current_job.full_names[current_user.id]