Ruby Variable assignment

Hello, I want to assign my variable 'a' some value as follows:

a = ":name, btnK"

and use this variable 'a'. when I do this and use the variable, I get
error as "no implicit conversion of String into Hash"...

Aprreciate a response

Thanks,
#M

···

--
Posted via http://www.ruby-forum.com/.

Without showing the exact code triggering the error, there is no way we
can help. Your variable and its contents are not special enough to show
an error per se:

2.0.0p247 :001 > a = ":name, btnk"
=> ":name, btnk"
2.0.0p247 :002 > puts a
:name, btnk
=> nil

···

--
Posted via http://www.ruby-forum.com/.

Watir expects Hash arguments, not String arguments.

This is wrong:
@browser.button(":name, btnK").wait_until_present

This is right:
@browser.button(name: btnK).wait_until_present

If you change this:
@googlesearchbutton = ":name, btnK"
to this:
@googlesearchbutton = { name: "btnK" }
it should work.

···

--
Posted via http://www.ruby-forum.com/.

Works for me:

irb(main):006:0> b.button( name: "btnK" ).flash
=> #<Watir::Button:0x..fe422fdee located=true selector={:name=>"btnK",
:tag_name =>"button"}>
irb(main):007:0> h = { name: "btnK" }
=> {:name=>"btnK"}
irb(main):008:0> b.button( h ).flash
=> #<Watir::Button:0x..fe422fdee located=true selector={:name=>"btnK",
:tag_name =>"button"}>

···

--
Posted via http://www.ruby-forum.com/.

You must have required the file at some point or you would get an
uninitialised constant error.

···

--
Posted via http://www.ruby-forum.com/.

Eric MSP Veith wrote in post #1125861:

Without showing the exact code triggering the error, there is no way we
can help. Your variable and its contents are not special enough to show
an error per se:

2.0.0p247 :001 > a = ":name, btnk"
=> ":name, btnk"
2.0.0p247 :002 > puts a
:name, btnk
=> nil

Following is the content of my files:

File1.rb
require "rubygems"
require "watir"

class GoogleHomePage

  attr_reader :shaik, :googlesearchbutton, :hindilinkclick,
:bengalilinkclick, :searchfield

def initialize()
  puts "in INITIALIZE"

  @googlesearchbutton = ":name, btnK"

  end

···

-------------------------
File2.rb

require "rubygems"
require "watir"
#require 'watir-webdriver'
require 'rspec'

Given /^that I have gone to the (.+)$/ do |page_name|
  puts "IN Given"

  @@googlehomepageobject = GoogleHomePage.new() #Instance of class in
File1.rb

  puts "------------ #{@@googlehomepageobject.googlesearchbutton}" #this
line prints the value of the variable as ":name, btnK"

  @browser.button(@@googlehomepageobject.googlesearchbutton).wait_until_present
#tis line triggers the error "no implicit conversion of String into
Hash"

end

Thanks,
#M

--
Posted via http://www.ruby-forum.com/\.

Joel Pearson wrote in post #1125866:

···

Watir expects Hash arguments, not String arguments.

This is wrong:
@browser.button(":name, btnK").wait_until_present

This is right:
@browser.button(name: "btnK").wait_until_present

If you change this:
@googlesearchbutton = ":name, btnK"
to this:
@googlesearchbutton = { name: "btnK" }
it should work.

=======

I made the changes, defined the variable as @googlesearchbutton = {
name: "btnK" } but, after this is any change required to the line which
calls the variable as below

@browser.button(@@googlehomepageobject.googlesearchbutton).wait_until_present
Still getting the error as
no implicit conversion of String into Hash (TypeError)
(eval):3:in `button'

Thx,
#M

--
Posted via http://www.ruby-forum.com/\.

Joel Pearson wrote in post #1125877:

You must have required the file at some point or you would get an
uninitialised constant error.

I required the file in File2.rb but I commented the line. Not sure how
it works.

Thx,
#M

···

--
Posted via http://www.ruby-forum.com/\.

File1.rb
require "rubygems"
require "watir"

class GoogleHomePage

  attr_reader :shaik, :googlesearchbutton, :hindilinkclick,
:bengalilinkclick, :searchfield

def initialize()
  puts "in INITIALIZE"

  @googlesearchbutton = ":name, btnK"

  end
-------------------------
File2.rb

require "rubygems"
require "watir"
#require 'watir-webdriver'
require 'rspec'

Given /^that I have gone to the (.+)$/ do |page_name|
  puts "IN Given"

  @@googlehomepageobject = GoogleHomePage.new() #Instance of class in
File1.rb

  puts "------------ #{@@googlehomepageobject.googlesearchbutton}" #this
line prints the value of the variable as ":name, btnK"

  @browser.button(@@googlehomepageobject.googlesearchbutton).wait_until_present
#tis line triggers the error "no implicit conversion of String into
Hash"

end

Thanks,
#M

···

===========

Eric, I got a different question here,in File2.rb, I've created an
instance of the class in File1.rb, I'm confused how ruby does this
though I didn't require File1.rb in File2.rb, is require not mandatory
to create an instance of a class?

Thanks,
#M

--
Posted via http://www.ruby-forum.com/\.