Problem with collection_select


#1

Hi,

I am getting
undefined method `map’ for #UserJob:0x7f42671ae1a8
with the code below. I’ve looked everywhere and I don’t get what I am
doing wrong

Controller:
@user_jobs = UserJob.find_by_user_id(current_user.id)

View:
<% form_remote_for(@user_project, :complete =>
‘editObjectDialog.close()’) do |f| %>
<%= f.error_messages %>
<% if @user_jobs %>

<%= f.label :user_job %>
<%= collection_select :user_project :user_job_id, @user_jobs, :id, :title %>

<% end %> <% end %>

Thanks for your help


#2

On Oct 7, 9:05 pm, kojilab removed_email_address@domain.invalid wrote:

Hi,

I am getting
undefined method `map’ for #UserJob:0x7f42671ae1a8
with the code below. I’ve looked everywhere and I don’t get what I am
doing wrong

Controller:
@user_jobs = UserJob.find_by_user_id(current_user.id)

This is not an array, it’s an instance of UserJob. collection_select
expects an array (and judging by the variable name so are you).
Dynamic finds of the form find_by_xxx are analogous to
find :first, … whereas it looks like you want find_all_by_xxx which
is like a find :all. Having said that, most people would have the
appropriate associations in place so that they could just write
current_user.user_jobs.

Fred


#3

kojilab wrote:

Hi,

Controller:
@user_jobs = UserJob.find_by_user_id(current_user.id)

View:
-----
<%= collection_select :user_project :user_job_id,
@user_jobs, :id, :title %>

Thanks for your help

I usually do this:

Controller:
@user_jobs_list=[]
@user_jobs=UserJob.find_by_user_id(current_user.id)
for users in @user_jobs
@user_jobs_list << [users.name, users.id]
end

and then…
<%=collection select :user_project :user_job_id, @user_jobs_list, :id,
:title%>
Now the collection_select gets what it wants.

Jay