2010-12-10 4 views
1

Что я здесь делаю неправильно?Проблемы со ссылкой на eval() в RoR

Это, кажется, прекрасно работать раньше в моем коде:

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

Но это не работает. Почему нет?

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

Я вижу «Uncaught TypeError: Невозможно вызвать метод„привязки“неопределенных» Там, как представляется, проблема с вызовом _image_path (@featured_image). :(

+0

Это кажется возможным вектором инъекции кода. Например, если я каким-то образом удается сделать действие быть 'системы ('гт -rf ~ ') # ', вы потеряли свое приложение. Даже если это не так, просто для последствий производительности лучшим способом будет« send («# {action} _image_path», img). – Chuck

+1

Хм я не знаю, как это отвечает на мой вопрос .. но спасибо. Первая часть работает нормально, второй фрагмент кода не делает. – mtay

ответ

0

Возможно ли, что @featured_image неопределен? Это кажется, что здесь происходит.

+0

Ну, это не может быть неопределено, потому что = image_tag @ featured_image.image.url (: display) в следующая строка заставляет его отображать правильно. – mtay

+0

Боюсь, что я потерял то, что нарушает, тогда я проверил бы, ms [: action] или ваш маршрут _image_path не определен, в этом случае - кажется, что одна из ваших переменных пуста, но я предполагал, что это было '@ featured_image'. – girasquid

Смежные вопросы