Taylor Strait wrote:
I can get this to work in the console by subbing a string for params[:person][:login_name] but my application won't "catch" and convert the params in the development site. Here is the login function:
#find user record by unique name name_array = %w{params[:person][:login_name]} name_array.each {|name| name.gsub!(/\"/, "")} @person = Person.find(:first, :conditions => ["first_name = ? and last_name = ?", name_array[0], name_array[1]])
People log in with their full name like, "Bob Smith." The database contains first_name and last_name columns. In the console when I substitute "Bob Smith" for params[:person][:login_name] the record is retrieved normally. But it doesn't work with params. Any suggestions?
This variation doesn't work either:
#find user record by unique email name = params[:person][:login_name] name_array = name_array = %w{name} name_array.each {|name| name.gsub!(/\"/, "")} @person = Person.find(:first, :conditions => ["first_name = ? and last_name = ?", name_array[0], name_array[1]])
Use:
name_array = params[:person][:login_name].split(/ /)
>> params[:person][:login_name] => "John Smith"
>> name_array = params[:person][:login_name].split(/ /) => ["John", "Smith"]
With %w, no substitutions are done on the inputs -- i.e. they are assumed to be literal string values. With %W substitutions can be done but they aren't split afterwards.
>> name_array = %w{params[:person][:login_name]} => ["params[:person][:login_name]"]
>> name_array = %w{#{params[:person][:login_name]}} => ["\#{params[:person][:login_name]}"]
>> name_array = %W{params[:person][:login_name]} => ["params[:person][:login_name]"]
>> name_array = %W{#{params[:person][:login_name]}} => ["John Smith"]