2010-07-19 3 views
1

J'ai un module d'aide avec un tas de méthode appelle au formatMéthode dynamique appel à une aide pour Rails

def link_to_details_for_facebook (param1, param2)

def link_to_details_for_twitter (param1, param2)

def link_to_content_for_facebook (param1, param2)

def link_to_content_for_twitter (param1, param2)

Y at-il un moyen d'appeler une méthode telle que, afin que je puisse appeler de manière dynamique la méthode d'assistance?

def link_to_type_for_social_network (param1, param2, type = "détails", SOCIAL_NETWORK = "facebook")
méthode ("# {type} _url_to _ # {SOCIAL_NETWORK} (param1, param2)". to_sym) .call

fin

Cela me donne juste l'erreur

méthode non définie details_to_facebook(param1, param2)' for class ActionView :: Base »

Répondre

3

Je ne connais pas la méthode méthode(), mais aurait utilisé moi-même send(). Puisque vous définissez les noms de méthodes pour commencer par "link_to ...", vous devez vous assurer que cela est ajouté à l'appel de la méthode. Je voudrais aller avec quelque chose comme ceci:

def link_to_type_for_social_network(param1, param2, type="details", social_network="facebook") 
    send("link_to_#{type}_for_#{social_network}", param1, param2) 
end