Можно ли переплетать Javascript и эрб? - PullRequest
0 голосов
/ 02 апреля 2020

Я бы хотел это сделать, но, очевидно, это неправильно. Любой способ получить ajax возвращение 'Cnut' в Erb?

processResults: function (data, params) { 
        // parse the results into the format expected by Select2
        // since we are using custom formatting functions we do not need to
        // alter the remote JSON data, except to indicate that infinite
        // scrolling can be used
        params.page = params.page || 1;
        return {
          results: $.map(data, function(cnut) {
              <% asdf = BandRole.where(band_id: cnut.id).first %>
              <% member = Fan.find(asdf.fan_id) %>
              var band_member = <% member.name %>
              return { 
                text: cnut.name + ", " + cnut.city + " (" + band_member + ")",
                id: cnut.id,
              };  
          }),
          pagination: {
            more: (params.page * 30) < data.total_count
          }
        };
      },

1 Ответ

1 голос
/ 03 апреля 2020

Вы можете указать Rails отображать JS вместо JSON.

В настройках вашего контроллера ваш блок response_to выглядит следующим образом:

respond_to do |format|
  format.html
  format.js { render :your_view }
end

Затем создайте представление с именем your_view.js.erb. Вы можете использовать это как обычный HTML вид, за исключением того, что вы можете поместить свои JavaScript и Ruby в этот файл, как вы это делали в своем примере. Однако это JS, который отправляется обратно в ваш браузер в ответе, а не JS, обрабатывающий ответ. Надеюсь, это поможет.

...