Неизвестная ошибка формата с ответом_to в Rails. Правильная попытка выполнения опроса для обновления

Привет, я полностью застрял в этом и искал какую-то помощь.

Когда я делаю показ на своем объекте simulation, я хочу, чтобы какой-то javascript начинал опрос каждые десять секунд, чтобы асинхронно вызывать simulation#update.

Я хочу сделать это respond_to, как таковой:

def show
    @simulation = Simulation.find(params[:id])
    respond_to do |format|
        format.js
        format.html { redirect_to simulation_url } # This causes problems
    end
end

Итак, у меня был бы update.js.erb, который делает что-то вроде строки (извините за coffeescript)

$.ajax({
    type: "PUT",
    url: "/simulations/#{params}"
}) 

$('#sim_div').html("<%= j (render @simulation) %>");

setTimeout(callUpdate, 10000)
return

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

Каков правильный путь? Я пробовал тонны решений, используя coffeescript в конвейере активов, и weird включает и встроенный javascript, чтобы не было adue.

Для ясности мой взгляд таков:

<%= render 'simulation' %>

<%= link_to 'Back', simulations_path %>

и частичное, что загружаются script и view:

<div id="sim_div">
  <h1><%= @simulation.identifier %></h1>
  <h4 class="offset-col-sm-1">Dimensions: <%= @simulation.x_size %>x<%= @simulation.y_size %></h4>
  <h4 class="offset-col-sm-1">Verdict: <%= @simulation.verdict %></h4>

  <table class="table table-bordered">
    <thead>
      <tr>
      </tr>
    </thead>

    <tbody>
      <% @simulation.state.each do |row| %>
        <tr>
        <% row.each do |current| %>        
            <td class="text-center"><%= current %></td>        
          <% end%>
        </tr>
      <% end %>
    </tbody>
  </table>
  <br>
</div>

Ответ 1

Вы можете попробовать ярлык, например respond_to :html, :js, и посмотреть, очищает ли он это. В противном случае попробуйте что-то более явное:

def show
  @simulation = Simulation.find(params[:id])
  respond_to do |format|
    format.js { render: "some view"}
    format.html { redirect_to simulation_url }
  end
end

format.js в действии :show по умолчанию будет рендерить show.js.erb, когда show вызывается с помощью ajax. Ответ html будет перенаправлять.

Это сообщение может быть полезным.