Ciao, sono totalmente bloccato su questo e cerco aiuto.Errore di formato sconosciuto con respond_to in Rails. Correttamente cercando di implementare il polling-to-update
Quando faccio uno spettacolo sul mio oggetto simulation
Desidero che alcuni javascript inizino a eseguire il polling ogni dieci secondi, per chiamare simulation#update
in modo asincrono.
voglio fare questo respond_to
, come ad esempio:
def show
@simulation = Simulation.find(params[:id])
respond_to do |format|
format.js
format.html { redirect_to simulation_url } # This causes problems
end
end
Quindi avrei un update.js.erb
che fa qualcosa sulla falsariga di (scusate la CoffeeScript)
$.ajax({
type: "PUT",
url: "/simulations/#{params}"
})
$('#sim_div').html("<%= j (render @simulation) %>");
setTimeout(callUpdate, 10000)
return
posso 't ottenere questo parziale javascript da chiamare se includo il format.html
javascript non viene eseguito e ottengo un errore di formato, e se io includo quella linea, quindi ottengo un errore di formato sconosciuto.
Qual è il modo corretto di procedere? Ho provato tonnellate di soluzioni usando il coffeescript nella pipeline di asset e strane include e javascript in linea per non aggiungere.
Per chiarezza il mio punto di vista è:
<%= render 'simulation' %>
<%= link_to 'Back', simulations_path %>
e parziale che i carichi di script e la vista è:
<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>
Scusate questo è quello che sto facendo .. Ho quel codice in 'show.js.erb' in modo che il formato dovrebbe chiamare sia' show.html.erb' e 'show.js.erb', ma solo il html viene chiamato quando sto usando quel 'answer_to' mostrato sopra in' simulazione # show' – NNNNNNNNNNDelicious
Ah ho letto male la tua domanda, modifico la mia risposta. –
Quindi capisco cosa intendi, invece di eseguire il rendering di una vista, basta rendere un partial JS che ha il tuo codice e renderizza il partial html, comunque ogni volta che vado a 'show' una simulazione, ottengo una richiesta per html, non js, quindi non eseguo mai quel JS, come posso risolvere questo? – NNNNNNNNNNDelicious