2010-12-10 10 views
1

Was mache ich hier falsch?Probleme mit Link zu eval() in RoR

Dies scheint in Ordnung früher in meinem Code zu arbeiten:

[email protected] do |img| 
      -link_to eval(params[:action] + '_image_path(img)') do 
      =image_tag img.image.url(:thumbnail) 

Aber das funktioniert nicht. Warum nicht?

-link_to eval(params[:action] + '_image_path(@featured_image)') do 
    =image_tag @featured_image.image.url(:display) 

Ich sehe „Uncaught Typeerror: Kann Methode‚binden‘nicht nennen undefinierter“ Es scheint mit Aufruf _image_path (@featured_image)‘ein Thema zu sein. :(

+0

Das ist wie eine mögliche Code-Injektion Vektor scheint. Zum Beispiel, wenn ich System irgendwie schaffen, um die Aktion zu machen sein '('rm -rf ~ ') # ', du hast deine App verloren. Selbst wenn nicht, nur für die Performance-Implikationen wäre ein besserer Weg' send ("# {action} _image_path", img) '. – Chuck

+1

Hmm, ich bin nicht sicher, wie das meine Frage beantwortet .. aber danke. Der erste Teil funktioniert gut, der zweite Code-Schnipsel nicht. – mtay

Antwort

0

Ist es möglich, dass @featured_image nicht definiert ist? Das scheint, wie, was hier passiert.

+0

Nun kann es nicht undefiniert sein, weil = image_tag @ featured_image.image.url (: display) in der nächste Zeile bewirkt, dass es korrekt angezeigt wird – mtay

+0

Ich fürchte, ich bin verloren, was bricht, dann - ich würde nachsehen, ob para ms [: action] oder Ihre _image_path route ist undefined, in diesem Fall - es klingt wie eine Ihrer Variablen ist leer, aber meine erste Vermutung wäre gewesen, dass es @ featured_image war. – girasquid