Как выбранная опция выбора рельсов дает из файла кофе

В файле js.coffee после успеха ajax мне нужно поместить значения в поле выбора с выбранным конкретным именем.

_form.html,erb :

<%= f.select(:user_id, Item.find(session[:login_users_item_id]).try(:users).order_by_fullname.collect {|u| [ u.full_name, u.id ] }, selected: current_user.id)%>

items.js.coffee:

$.ajax '/users.json',   
type: 'GET', data: {"from_prod_bu" : selecteditemId},
success: (data) ->
  userSelectBox = $('#prod_user_id')
  userSelectBox.html('')
  if data.length == 0
    userSelectBox.append($('<option>').text('').attr('value', ''))
  else
    $.each data, (index,el) ->
      userSelectBox.append($('<option>').text(el.firstname+' '+el.lastname).attr('value', el.id))

Теперь полное имя пользователя отображается в поле выбора, но как я могу указать выбранный параметр для отображения определенного имени пользователя.

Спасибо


person jissy    schedule 02.03.2016    source источник
comment
Просто для ясности - какой конкретный вариант вы хотите предварительно выбрать? Если этот параметр уже известен в вашем JS-коде, см. ответ ниже. Если ожидается, что идентификатор выбранного пользователя будет передаваться через AJAX, приведенный ниже код можно легко изменить в зависимости от того, как он передается.   -  person Aleph Aleph    schedule 02.03.2016


Ответы (1)


Выбранный вариант устанавливается с помощью атрибута selected.

Предположим, что id пользователя, которого нужно выбрать, хранится в переменной selectedUserId в вашем JavaScript, тогда следующий код должен работать:

success: (data) ->
  userSelectBox = $('#prod_user_id')
  userSelectBox.html('')
  if data.length == 0
    userSelectBox.append($('<option>').text('').attr('value', ''))
  else
    $.each data, (index, el) ->
      option = $('<option>')
        .text(el.firstname + ' ' + el.lastname)
        .attr('value', el.id)
      if el.id == selectedUserId
         option.attr 'selected', 'selected'
      userSelectBox.append option

Подробнее об установке атрибута selected см. здесь. с jQuery.

person Aleph Aleph    schedule 02.03.2016