Получить атрибут из модели выбранного варианта - PullRequest
0 голосов
/ 21 октября 2018

У меня есть раскрывающийся список сотрудников, в котором перечислены все сотрудники.Я хочу иметь возможность выбрать сотрудника и получить адрес сотрудника из модели, чтобы я мог отобразить его.Ниже приведен код моей коллекции collection_select.

<div class="form-group col-md-2 field">
<%= form.label :employee_id %>
<%= form.collection_select :employee_id, Employee.all, :id, :full_name,{:prompt=>"Select Employee"},{:id=>"emp_select",class:"form-control",:onchange=>"getEmployee();"} %>
</div>

Далее приведен код, который я использую для получения значения сотрудника, который был выбран, и он работает.

function getEmployee() {
    var selectedVal=$('#emp_select option:selected').val();}

Отсюда, что мне сделать, чтобы получить адрессотрудника, который был выбран?

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Добавить адрес в атрибут данных опции:

<%= form.select :employee_id, 
  options_for_select(Employee.all.map { 
    |e| [e. full_name, e.id, { 'data-address' => e.address  }] 
  }), 
  { prompt: "Select Employee" }, 
  { id: "emp_select", class: "form-control", onchange: "getEmployee();" } %>

При изменении получить его с помощью js:

function getEmployee() {
  var selectedVal=$('#emp_select option:selected').data("address");}

и вставить его в нужное место

0 голосов
/ 21 октября 2018

Вам нужно будет получить адрес сотрудника по телефону ajax.Вот шаги:

  1. Определите действие в вашем приложении rails для возврата адреса сотрудника по json.
  2. Сделайте ajax-запрос к этому действию и получите необходимую информацию.
  3. Отображение результата.

Для получения дополнительной информации перейдите по этой ссылке: https://guides.rubyonrails.org/working_with_javascript_in_rails.html

rout.rb

controller :ajax do
  get 'ajax/get_employee_address/:employee_id', action: :get_employee_address, as: :get_employee_address
end

ajax_controller.rb

class AjaxController < ActionController::Base
  def get_employee_address
    employee = Employee.find(params[:employee_id])

    render json: employee.address.to_json
  rescue ActiveRecord::RecordNotFound
    render json: 'Employee not found', status: 422
  end
end

Ваш код JS

function getEmployee() {
  var selectedVal=$('#emp_select option:selected').val();
  $.ajax({
    url: '/ajax/get_employee_address/' + selectedVal,
    success: function (address) {
      // Render your address to view
    },
    error: function () {
      // Handle error here or just return nothing
      return null;
    }
  })
}

Примечание : Эта конечная точка ajax будет отображать адрес вашего сотрудника снаружи, поэтому обязательно сделайте аутентификацию, чтобы предотвратить утечку информации.

...