Отправка данных из представления в контроллер AJAX - PullRequest
0 голосов
/ 18 мая 2018

как я могу отправить var lang на контроллер, чтобы я мог использовать его в partiel.вот мой снимок:

  $("#search-select").on("click", function() {
    var lang = $('#search-select').dropdown('get value');
    $.get({
      url: translations_url
      data: lang,
      success: function(){
        console.log('data sent');
      }
    });
  });

РЕДАКТИРОВАТЬ

текущий код:

  $("#search-select").dropdown();

  $("#search-select").on("click", function() {
    var lang = $('#search-select').dropdown('get value');
    $.get({
      url: "#{translations_url}",
      dataType: "script",
      data: {
        lang: lang
      }
    });
  });

проблема: params [: lang] все еще неработа в контроллере

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

вы пропустили после url: translations_url, также если вы можете отправлять данные в виде JSON с ключом и значением, например data: {lang: 'value'}, также вам не нужно указывать имя метода, если вы используете GET,см. приведенный ниже пример

$.ajax({
  url: translations_url,
  data: {lang: 'value'},
  success: function(){
    console.log('data sent');
  }
});

, если вам нужно использовать метод POST, тогда включите method: 'post', если jjery aase-метод incase не вызывает файл js.erb, который нужно добавить dataType: 'script'

0 голосов
/ 18 мая 2018

Вы не можете использовать помощники пути маршрута на веб-интерфейсе.Но вы можете отправить правильный URL из бэкэнда во внешний интерфейс через атрибут data:

#search-select{ data: { path: translations_url } }

А затем в вашем js:

$("#search-select").on("click", function() {
    var url = $(this).data('path'),
        data = { lang: $(this).dropdown('get value') };

    $.get({
      url: url,
      data: data,
      success: function(){
        console.log('data sent');
      }
    });
});
0 голосов
/ 18 мая 2018

Установите правильный _path для вашего сообщения метод:

$.ajax({
    url: '<%= controller_path %>', method: 'POST',
    beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
    data: { lang: lang },
    dataType: 'json',
    success: function (data) {
      console.log(data);
    }
});

Теперь вы можете работать с lang в вашем контроллере

def method
  params[:lang] # do something
  answer = 'Then, you can return some data to view'
  respond_to do |format|
    format.json { render json: answer }
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...