2015-08-12 14 views
9

Xin chào, tôi hoàn toàn bị mắc kẹt về vấn đề này và tìm kiếm sự trợ giúp.Lỗi định dạng không xác định với respond_to trong Rails. Cố gắng thực hiện chính xác việc bỏ phiếu để cập nhật

Khi tôi thực hiện một chương trình trên đối tượng của mình simulation Tôi muốn một số javascript để bắt đầu bỏ phiếu sau mỗi mười giây, để gọi simulation#update không đồng bộ.

Tôi muốn làm điều này bằng respond_to, như vậy:

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

Vì vậy, tôi sẽ có một update.js.erb rằng làm điều gì đó dọc theo dòng (xin lỗi vì sự coffeescript)

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

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

setTimeout(callUpdate, 10000) 
return 

tôi có thể Không nhận được javascript này một phần được gọi là nếu tôi bao gồm format.html javascript không chạy và tôi gặp lỗi định dạng và nếu tôi bao gồm dòng đó thì tôi gặp phải lỗi định dạng không xác định.

Whats cách chính xác để giải quyết vấn đề này? Tôi đã thử tấn của các giải pháp bằng cách sử dụng coffeescript trong đường ống tài sản và lạ bao gồm và javascript nội tuyến để không có adue.

Để làm rõ quan điểm của tôi là:

<%= render 'simulation' %> 

<%= link_to 'Back', simulations_path %> 

và một phần là kịch bản và xem tải là:

<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> 

Trả lời

0

Bạn có thể thử một phím tắt như respond_to :html, :js và thấy rằng nếu xóa nó lên. Nếu không cố gắng một cái gì đó rõ ràng hơn:

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 trong hành động :show sẽ theo mặc định làm show.js.erb khi chương trình được gọi với ajax. Phản hồi html sẽ là chuyển hướng.

This bài đăng trên blog có thể hữu ích.

+0

Xin lỗi đó là những gì tôi đang làm .. Tôi có mã đó trong 'show.js.erb' để định dạng nên gọi cả' show.html.erb' và 'show.js.erb' tuy nhiên chỉ có html được gọi khi tôi đang sử dụng 'response_to' được hiển thị ở trên trong' simulation # show' – NNNNNNNNNNDelicious

+0

Ahh Tôi đã đọc sai câu hỏi của bạn, tôi sẽ chỉnh sửa câu trả lời của tôi. –

+0

Vì vậy, tôi thấy ý của bạn, thay vì hiển thị chế độ xem, chỉ hiển thị phần JS có mã của bạn và hiển thị phần html, tuy nhiên bất cứ khi nào tôi đến 'hiển thị' mô phỏng, tôi nhận được yêu cầu html, chứ không phải js, vì vậy tôi không bao giờ thực hiện JS đó, làm thế nào tôi có thể giải quyết vấn đề này? – NNNNNNNNNNDelicious

Các vấn đề liên quan