2016-11-24 8 views
1

У меня есть вопрос, который мог быть задан раньше, но у меня проблемы с поиском правильного описания. Надеюсь, кто-то может мне помочь.Javascript в HAML в Javascript

В приведенном ниже коде на строке, где я установил var price, я хочу добавить переменную javascript accu_id, чтобы найти запись в моей БД через рельсы. Как это сделать во встроенных рельсах в javascript?

:javascript 
    $('#accu').change(function() { 
     var accu_id = $("#accu")[0].selectedOptions[0].value 
     var price = "#{currency(Product.find_by(id: accu_id).price2)}" 
     $('#price_accu').append(price) 
    }); 

Или есть более простой способ сделать это?

+0

Почему вы смешиваете чистые JS и jQuery? –

+1

Лучшим способом было бы использовать AJAX и выполнить запрос внутри вашего контроллера. Вы не можете добавить переменные JS внутри встроенного рубина в этом контексте. Я думаю, это может быть хорошим руководством в отношении того, как этого достичь: http://stackoverflow.com/a/15422887/615410 – ma3x

ответ

3

У вас есть два варианта.

  1. Вы можете использовать запрос AJAX, чтобы получить данные из базы данных
  2. Вы можете использовать понятие отображения как следующие данные

    вар данных = @processed_data // JSON, который содержит обработанные данные в формате JSON.
    var accu_id = $ ("# accu") [0] .selectedOptions [0] .значение
    var price = data.accu_id;

Здесь @processed_data содержит данные, такие как следующие

@processed_data = currency_calculation 

def currency_calculation 
    Product.all.map { |product| [product.id, currency(product.price2) ] }.as_json 
end 

Пример

Предположим, продукты таблицы имеют две записи затем @processed_data содержат значения, как следующие

{ "1" => "20.00", "2" => "25.50" } 

Значение выше данные, непосредственно присваиваемые переменной js данные и доступны как data.key

Первый вариант - лучший выбор, а второй возможен.

Примечание: Вы не можете использовать переменную js внутри рубина.

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

  • Нет связанных вопросов^_^