JS:
$(this).attr({
src: "<%= asset_path("\\$hoverClass"'-red.jpg') %>"
});
Это выводит /assets/$hoverClass-red.jpg вместо /assets/sports-red.jpg ('спорт' являются значение $ hoverClass).
JS:
$(this).attr({
src: "<%= asset_path("\\$hoverClass"'-red.jpg') %>"
});
Это выводит /assets/$hoverClass-red.jpg вместо /assets/sports-red.jpg ('спорт' являются значение $ hoverClass).
Ruby не интерполирует строки как это. Что вы имеете в виду это:
<%= asset_path("#{$hoverClass}-red.jpg") %>
Как примечание, используя $
-prefixed переменных в Ruby, как правило, плохая форма, так как это означает, что вы объявляя их в глобальном масштабе. Это неизбежно приводит к конфликтам имен, непреднамеренной сохранности данных и множеству других проблем, которые трудно поддаться. По возможности используйте переменные экземпляра @
-prefixed.
Вы также мог бы добиться этого, как:
$(this).attr(<%= { src: asset_path("#{$hoverClass}-red.jpg") }.to_json %>);
Это, как правило, более надежны, так как собственно JSON маскирование делается для вас.
$ hoverClass - это переменная JavaScript внутри функции. –
Как вы ожидаете переменные JavaScript, которые выполняются в браузере, чтобы каким-то образом повлиять на вывод кода Ruby? Вам нужно будет интерполировать это на клиенте с помощью JavaScript: 'src.replace (/ \ $ hoverClass /, $ hoverClass)' – tadman
Это отличный вопрос. * facepalm * –