add an array to params

13 views
Skip to first unread message

Nimbuzz Zzubmin

unread,
Oct 21, 2011, 3:53:33 AM10/21/11
to rubyonra...@googlegroups.com
Hello everybody,
I hope you can help me in this problem.
I need to add an array to params in order to send some data from the
view to the controller.
I'm using JavaScript to dynamically add lines lihe this:

<li>
<input type="text" value="...">
<input type="text" value="...">
<input type="checkbox" checked="checked" value="...">
</li>

Then, after the submit I need to access to the the values in this way:

params[:items].each do |i|
logger.debug("--> #{i[:desc]} ");
logger.debug("--> #{i[:value]} ");
logger.debug("--> #{i[:flag]} ");
end

So, I think the proper way is to add te "name" field in this way:

<input type="text" name="items[0][desc]"nvalue="...">

But there is something wrong.
Does someone can help me?

--
Posted via http://www.ruby-forum.com/.

Tim Shaffer

unread,
Oct 21, 2011, 9:22:23 AM10/21/11
to rubyonra...@googlegroups.com
On Friday, October 21, 2011 3:53:33 AM UTC-4, Ruby-Forum.com User wrote:

But there is something wrong.
Does someone can help me?

Probably. What is wrong? Are you getting any error messages? Have you checked out what params looks like in your controller (puts params.inspect)?

Colin Law

unread,
Oct 21, 2011, 9:45:25 AM10/21/11
to rubyonra...@googlegroups.com

Also check out the html itself to make sure it looks as you expect
(View > Page Source or similar in your browser) and look in the Rails
log (log/development.log) to see what params are actually passed.

Colin

Nimbuzz Zzubmin

unread,
Oct 21, 2011, 10:28:29 AM10/21/11
to rubyonra...@googlegroups.com
The problem is that i get all the values in a sibngle field of the
array.
This is the log of the parameters:

Parameters: {"items"=>{"0"=>{"flag"=>"true", "desc"=>"Description",
"value"=>"2"}}, "commit"=>"Create ...

If I try to get the parameters inside the items in this way:

params[:items].each do |i|

logger.debug("--> #{i[:desc]} "); <- row 80


logger.debug("--> #{i[:value]} ");
logger.debug("--> #{i[:flag]} ");
end

I get this error

TypeError (Symbol as array index):
app/controllers/pay_checks_controller.rb:80:in `[]'
app/controllers/pay_checks_controller.rb:80:in `create'
app/controllers/pay_checks_controller.rb:79:in `each'
app/controllers/pay_checks_controller.rb:79:in `create'

But... I can acces with a direct indexing as:
items[0] I get "0"
and items[1] I get flagtruedescDescriptionvalue2

Nimbuzz Zzubmin

unread,
Oct 21, 2011, 11:57:39 AM10/21/11
to rubyonra...@googlegroups.com
I found a solution,
I have to iterate params[:items] in this way:

params[:items].each do |key, value|
logger.debug("--> #{value[:desc]} ");
end

Thanks to all.

Reply all
Reply to author
Forward
0 new messages