11155
(-- --)
October 21, 2011, 7:53am
1
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?
Probably. What is wrong? Are you getting any error messages? Have you checked out what params looks like in your controller (puts params.inspect)?
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
11155
(-- --)
October 21, 2011, 2:28pm
4
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
11155
(-- --)
October 21, 2011, 3:57pm
5
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.