Take the following class:
class Automator
def fill_specific_form(fields)
fields.each_pair do |key, value|
puts \"Setting \'#{key}\' to \'#{value}
If you set no other local variables inside the method, local_variables will give you a list of the method's parameter names (if you do set other variables you can just call local_variables first thing and remember the result). So you can do what you want with local_variables+eval:
class Automator
def fill_specific_form(first_name, last_name)
local_variables.each do |var|
puts "Setting #{var} to #{eval var.to_s}"
end
end
end
Automator.new().fill_specific_form("Mads", "Mobaek")
Be however advised that this is pure evil.
And at least for your example
puts "Setting first_name to #{first_name}"
puts "Setting last_name to #{last_name}"
seems much more sensible.
You could also do fields = {:first_name => first_name, :last_name => last_name} at the beginning of the method and then go with your fields.each_pair code.