Могу ли я иметь частичное JavaScript в Ruby on Rails? Частичное пытается сделать в HTML - PullRequest
0 голосов
/ 03 сентября 2018

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

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

Вот все, что у меня есть до сих пор:

#views/shared/_delete_multiple_items.js.erb
alert("<%= random_variable %>");

.

#views/users/index.html.erb
...
<script>
  function deleteMulitpleUsers() {
    <%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World" %>
  }
</script>

Похоже, что Rails пытается визуализировать частичное в HTML, если я правильно понимаю эту ошибку:

Отсутствует частичное общее / _delete_multiple_items с {: locale => [: en], : форматы => [: html],: варианты => [],: обработчики => [: raw,: erb,: html, : builder,: ruby,: coffee,: jbuilder]}. Поиск в:

Я пытался включить :formats => :js с рендером, как это:

<%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World", :formats => :js %>

но я все еще получаю ту же самую точную ошибку. Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Изменить это:

<%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World" %>

к этому:

<%= render partial: 'shared/delete_multiple_items', formats: :js, :locals => {:random_variable => "Hello World"} %>

partial: в начале, чтобы указать rails искать частичку, и formats: :js, чтобы сказать rails, чтобы искать файл js (обратите внимание, что formats НЕ является потомком locals)

0 голосов
/ 03 сентября 2018

Вы пытались добавить j в файл js.erb?

#views/shared/_delete_multiple_items.js.erb
alert("<%= j random_variable %>");
0 голосов
/ 03 сентября 2018

Вы получаете эту ошибку, потому что формат ответа сервера html, а не javascript. Настройка формата ответа выполняется в контроллере, поэтому размещение format: :js в шаблонах не будет работать. Попробуйте эти шаги и посмотрите, работают ли они на вас.

  1. Переименовать _delete_multiple_items.js.erb в _delete_multiple_items.html.erb

  2. Поместить alert("<%= random_variable %>"); внутрь <script> тег

  3. В index.html.erb удалите все коды, связанные с js, и просто наберите <%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World" %>

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