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:
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?
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)?
On 21 October 2011 14:22, Tim S. [email protected] wrote:
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)?
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
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
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.