Вызов и выполнение метода rails только по нажатию - PullRequest
0 голосов
/ 28 сентября 2018

функция JavaScript:

document.getElementById("pause").addEventListener("click", function(event){
    event.preventDefault();
    <% execution.pause %>
});

кнопка паузы:

<%= button_tag(id:'pause', class: "btn btn-raised btn-primary") do %>
    <span><i class="far fa-pause-circle"></i> Pause</span>
<% end %>

У меня есть эта функция JavaScript, которая слушает, когда моя кнопка паузынажата.Это не работает должным образом, потому что строка, которая вызывает <% execution.pause %>, выполняется всякий раз, когда я загружаю страницу.

Я знаю, это потому, что я не могу назвать этот метод rails вот так.Кроме того, я новичок в рельсах, и я не знаю, как вызвать и выполнить его только по щелчку.Пожалуйста, дайте несколько предложений.

1 Ответ

0 голосов
/ 28 сентября 2018
<%= button_tag(id: 'pause', class: "btn btn-raised btn-primary") do %>
  <span><i class="far fa-pause-circle"></i> Pause</span>
<% end %>

Создание маршрута для выполнения pasue

get '/execute/pause', to "custom#pause_execution"

При щелчке запускается ajax-запрос

<script type="text/javascript">
  $('#pause').on('click', function(e){
    e.preventDefault();
    var execute_id = "<%=execution.id%>"
    // ajax request 
    $.ajax({
      url: "/execute/pause",
      type: "GET",
      data : {
        id: execute_id
      },
      dataType: "script",
    });    
  });
</script>

In custom_controller.rb

class CustomController < ApplicationController
  def pause_execution
    #assuming Execution is a model which has a pause method
    execution = Execution.find(params[:id])
    if execution.pause
       flash[:notice] = "Paused successfully!"
    else
      flash[:error] = "Something went wrong"
    end
  end
end
...