Alex Rivera | Logout

how to override [] brackets in ruby?

Asked 2009-06-09T16:15:09.257
11

I am writing an Ajax request form with Ruby on Rails using a collection_select tag that looks like this:

<%= collection_select("Jobs", "clearance", @allClearances, "clearance", "clearance", {:prompt => "Select a Clearance"} )%>

Ruby then builds an HTML select tag with id = "Jobs_clearance" and name = "Jobs[clearance]"

I want to send the parameter to my controller, which looks like this:

class JobsController < ApplicationController
  def foo
    @clearance = params[:Jobs[clearance]]
  end

Unfortunately, Ruby only reads ":Jobs" as the symbol instead of ":Jobs[clearance]"
Is there a way to escape the []'s? backslash isn't working.

Edit
Report

1 Answer

11

You need to use params[:Jobs][:clearance]

params is a hash of all the request parameters. But params[:Jobs] is ALSO a hash of all :Jobs parameters. So calling params[:Jobs][:clearance] is calling the [] method on the params[:Jobs] object passing :clearance in as a parameter.

answered 2009-06-09T16:17:36.233

Your Answer