This is a Rails example, but I think the problem is a general Ruby
matter.
I am using class_eval within a class method, foobar(), to have it create
an instance method, get_foobar(). I am passing a value (“testing testing
123”) to foobar() that I want to make part of get_foobar(). However, I
can’t seem to include this value in the output of get_foobar().
Where I want the “render” line to output “A start testing testing 123
end O”, it only outputs “A start end O”. Extremely grateful for any
help. Code:
class HelpController < ApplicationController
def self.foobar(v)
class_eval %q{
def get_foobar()
"start #{v} end"
end
}
end
foobar "testing testing 123"
def index
render :text => "A "+get_foobar+" O"
end
end
This is a Rails example, but I think the problem is a general Ruby
matter.
Perhaps, but it would be more helpful to isolate the problem by removing
all Rails influence, since there is every chance that Rails is munging
up core Ruby behavior.
But I think the problem is simply that you are not quoting your strings
correctly:
class HelpController
def self.foobar(v)
class_eval %Q{
def get_foobar()
“start #{v} end”
end
}
end
foobar "testing testing 123"
def index
puts "A " + get_foobar + " O"
end
end
HelpController.new.index # A start testing testing 123 end O
===============================================================================
| ara [dot] t [dot] howard [at] noaa [dot] gov
| strong and healthy,
| who thinks of sickness until it strikes like lightning?
| preoccupied with the world,
| who thinks of death, until it arrives like thunder?
| – milarepa
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.