Send a collection from view to controller


#1

Hi everybody,

Maybe this is a sort of newbie question but I’ve been trying to solve
it for several days without a solution.

Basically what I want to do is to pass a collection from the view to
my controller. I paste here the relevant part of both.

Controller:

@member=Member.find(:all)

if params[:new_member]=nil
@list=[]
@list.push(Member.new)
else
@list=params[‘list’]
@list.push(Member.find(params[:new_member]))
end

View:

Inside a form that redirects to the controller

<%=member.name> <%end%>

<%=submit_tag(“Add”)%>

<%= hidden_field “list”, @list %> # [1]

[1] Here’s the problem. The error I got is

“undefined method `push’ for {”#<User:
0xb7086210>"=>""}:HashWithIndifferentAccess"

But more important in parameters[error log]:

""list"=>{"#<User:0xb7086210>"=>""}}"

It means that the params[‘list’] value is taken as @list.name [that is
just garbage]

I Hope someone can help me! Thanks!


#2

First, the comparison between params[:new_member] and nil should use
“==”
if nil == params[:new_member]


#3

On Mar 27, 8:53 am, Phillip <p…@phillip harris.com> wrote:

First, the comparison between params[:new_member] and nil should use
“==”
if nil == params[:new_member]

Yes you’re right It was a typing error here in the post. But I still
have this problem I hope so can help me.


#4

Have a look in the log to see what the parameters are, particularly
params[:list]. I think your code is assuming it is an array but the
error
suggests otherwise. Also have a look in the debugger to what is what.
Also
the source of the web page may be informative.

2009/3/27 Hiro removed_email_address@domain.invalid