Hi all
I have the following code snipped:
@country = Country.new
Instead of hardcoding @country and Country I'd like to use the contents
of two strings:
instance_var_name = 'country'
class_name = 'Country'
How can this be achieved?
Thanks a lot for help and yes, I'm working on my Ruby skills but I'm not
quite there yet.
Josh
···
--
Posted via http://www.ruby-forum.com/.
Joshua Muheim wrote:
Hi all
I have the following code snipped:
@country = Country.new
Instead of hardcoding @country and Country I'd like to use the contents
of two strings:
instance_var_name = 'country'
class_name = 'Country'
How can this be achieved?
Thanks a lot for help and yes, I'm working on my Ruby skills but I'm not
quite there yet.
Josh
ri Object#instance_variable_set
ri Module#const_get
you can use the instance_variable_set and const_get methods. exempli gratia:
def set_country(ivar_name,klass)
self.instance_var_set('@'+ivar_name, Object.const_get(klass).new)
end
···
On 3/26/07, Joshua Muheim <forum@josh.ch> wrote:
Hi all
I have the following code snipped:
@country = Country.new
Instead of hardcoding @country and Country I'd like to use the contents
of two strings:
instance_var_name = 'country'
class_name = 'Country'
How can this be achieved?
Thanks a lot for help and yes, I'm working on my Ruby skills but I'm not
quite there yet.
Josh
--
Posted via http://www.ruby-forum.com/\.
--
Chris Carter
concentrationstudios.com
brynmawrcs.com
Thanks a lot, guys!
I got another problem now:
private
def model_obj_name
CountriesController.controller_class_name.underscore.sub(/_controller$/,
'').singularize
end
def model_obj=(obj)
self.model_obj_name
end
This gives me the following error:
private method `model_obj_name' called for
#<CountriesController:0x23e3f20>
Why that? I *can* call private methods within the methods of the same
object, can't I?!
···
--
Posted via http://www.ruby-forum.com/.
Yes, but you can't call them with an explicit receiver. Try simply:
def model_obj=( obj )
model_obj_name
end
···
On Mar 26, 4:22 pm, Joshua Muheim <f...@josh.ch> wrote:
Thanks a lot, guys!
I got another problem now:
private
def model_obj_name
CountriesController.controller_class_name.underscore.sub(/_controller$/,
'').singularize
end
def model_obj=(obj)
self.model_obj_name
end
This gives me the following error:
private method `model_obj_name' called for
#<CountriesController:0x23e3f20>
Why that? I *can* call private methods within the methods of the same
object, can't I?!