Add an array to params

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:increate’
    app/controllers/pay_checks_controller.rb:79:in each' app/controllers/pay_checks_controller.rb:79:increate’

    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.

    This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

    | Privacy Policy | Terms of Service | Remote Ruby Jobs