Ресурсы Rails: использование переменной js / cofee для указания имени изображения

#ruby-on-rails

#ruby-on-rails

Вопрос:

Я новичок в rails, и я все еще немного смущен конвейером rails assets.

У меня есть массив с кучей строк, и с каждой строкой связано изображение. Я хочу, чтобы src изображения был равен строке ‘.png’.

Вот некоторый код, который я пытался написать (который не работает). Я понимаю, что причина, по которой это не работает, заключается в том, что код ruby выполняется при компиляции, но я не уверен, как еще это сделать. Спасибо за вашу помощь!

for flavor in flavors
curFlavorImage = document.createElement('img')
$(curFlavorImage).attr('src', "<%= asset_path('" flavor['flavor'] '.png' "') %>")

Комментарии:

1. Как говорит @Baldrick… Вы должны научиться различать серверную и клиентскую части. Сервер создает код, с которым клиент не может работать. Клиент должен отправить запрос на сервер, чтобы получить ответ. Javascript не может ни изменять, ни создавать код ruby.

Ответ №1:

flavor это переменная javascript, она не может использоваться кодом ruby / erb.

Если у вас есть фиксированное количество изображений, я бы сделал так:

 var flavor_images = [];
flavor_images['flavor1'] = '<%= asset_path("flavor1.png") %>';
flavor_images['flavor2'] = '<%= asset_path("flavor2.png") %>';
// ...
for flavor in flavors 
   curFlavorImage = document.createElement('img') 
   $(curFlavorImage).attr('src', flavor_images[flavor['flavor']]);
  

Комментарии:

1. Большое вам спасибо! Это имеет полный смысл