2010-02-20 8 views
2

Je veux rendre mon contrôleur de rails plus flexible et essayer de créer du méta foo pour cela.Chaîne à méthode/fonction appel à ruby?

J'ai un problème avec la méthode redirect_to. Puis-je convertir la méthode "edit_admin_post_path()" à partir d'une chaîne ou mieux lire le nom du contrôleur et le transmettre de manière dynamique?

ceci est mon code pour "post" dans mon contrôleur Admin :: Posts.

respond_to do |format| 
    format.html { redirect_to(edit_admin_post_path(@object)) } 
end 

merci!

Répondre

5

Je ne comprends pas ce que vous voulez faire, mais il existe plusieurs façons de répondre à votre demande. L'un est

what = "post" 
respond_to do |format| 
    format.html { redirect_to(send("edit_admin_#{what}_path", @object)) } 
end 

Gardez à l'esprit, edit_admin_post_path est égal à

url_for(:controller => "admin/posts", :action => "edit", :id => @object) 

Ainsi, vous pouvez toujours faire

what = "post" 
respond_to do |format| 
    format.html { redirect_to(url_for(:controller => "admin/#{what.pluralize}", :action => "edit", :id => @object)) } 
end 

ou mieux, si vous souhaitez rediriger dynamiquement à l'action d'édition selon au contrôleur actuel, il suffit de passer le hachage des options.

respond_to do |format| 
    format.html { redirect_to(:action => "edit", :id => @object) } 
end 
+0

Merci beaucoup! – xaver23