Как использовать переменную javascript во встроенном Ruby-коде в файле htm.erb - PullRequest
0 голосов
/ 26 июня 2018

У меня есть набор данных в поле выбора, скажем, @users = User.all. При изменении я хотел бы получить переменную в JavaScript с выбранным пользователем, я имею в виду что-то вроде этого:

    $("user_select").change(function(e){
        e.preventDefault();
        user_id = $(this).val();
        user = <%= @user.find(<user_id>) %>
    }) 

Возможно ли это? Или я должен поместить всю коллекцию в переменную javascript и получить ее оттуда?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Я думаю простым языком, как сказал @ sergio-tulentsev, то, что вы пытаетесь сделать, не является мошенничеством, но при использовании большего количества js вам не нужно искать пользователя в коллекции rails, если вы уже загрузил всех пользователей, затем просто вставил их в переменную javascript и в событии change просто выбрал одного из них, что-то вроде этого.

Когда вы загружаете страницу со всеми пользователями, просто сохраните их в переменной javascript как json

var users = <%= @users.to_json.html_safe %>;

после этого на вашем мероприятии

$("user_select").change(function(e){
  e.preventDefault();
  user_id = $(this).val();
  $.each(users, function(i, u) {
    if (u.id == user_id) {
      user = u
      return;
    }
  });
}) 

с этим у вас будет пользователь с json и всеми значениями пользователя, затем вы можете сделать что-то вроде user.name в javascript, чтобы получить значения.

Я использовал jquery, потому что в вашем примере кода вы его используете.

0 голосов
/ 26 июня 2018

Возможно ли это?

Не так, нет. У вас есть только два варианта:

  1. поиск на стороне сервера: Сделайте еще один запрос к серверу, в котором вы передаете user_id и извлекаете данные пользователя.

  2. поиск на стороне клиента: как вы упомянули, вставьте данные всех пользователей на страницу и просто выберите одного из них на основе user_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...