В этом приложении ROR я пытаюсь отображать/повторно отображать результаты, если пользователь меняет любое из входных значений. Используя инструменты разработчика в Chrome, я могу определить, что соответствующие результаты были рассчитаны и возвращены с использованием Javascript ниже. Я могу выбрать изменение в любом из входных значений и повторить вычисления. Однако я не могу получить Javascript для отображения результатов.Отобразить результаты расчета по запросу AJAX
Ниже я добавил Javascript, соответствующую часть представлений (один основной - один частичный), а также соответствующую часть контроллера.
javascript - drill.js.coffee Я уверен, что мне не хватает чего-то, что позволило мне разместить соответствующий код в том месте, где я указываю с помощью ???
$('document').ready ->
if $('#evaluation_assumption_params').length == 1
drill_id = $('.form.assumption').attr('data-drillid')
$('#evaluation_assumption_params').change((event) ->
event.preventDefault()
loadAssumptionChange drill_id
)
loadAssumptionChange = (drill_id)->
data = $('#evaluation_assumption_params').serialize()
console.log data
$.ajax
url:"/drills/#{drill_id}/projection.json"
type:"post"
dataType: 'json'
data: data
success: (data,success,xhr)->
# ??? - tried numerous statements including
# $('#place_to_add_projection_results').html(data)
# $('#ajax').html("<%= escape_javascript(render(:partial => 'drills/evaluation_results')).html_safe %>")
# What should go here ???
парциальное - _assessment_results.html.erb
<%= simple_form_for :result_list, :html => { class: 'infogroup', id: "evaluation_results", :method => :post },
remote: true do |f| %>
<%= content_tag :header, "Results", class: 'infogroup-header'%>
<%= content_tag :div, class: 'infogroup-body' do %>
<%= content_tag :table, class: 'info', border: 0, cellspacing: 5, cellpadding: 0 do %>
<tr>
<th>Company</th>
<th>SP</th>
<th>Mkt Cap</th>
...
</tr>
<% if @result_list.present? %>
<% @result_list.each do |result| %>
<tr>
<td><%= result.listing_name %></td>
<td><%= number_to_currency(result.listing.share_price_dollars,
:precision => 3, :delimiter => ',') %></td>
…
главный экран, соответствующий контроллер действия - investor.html.erb Парциальное выше вызывается этого экрана, а также JavaScript
<% content_for :title, "Drill Investor - Valuations" %>
… more heading stuff
<section>
<div class="form assumption" data-drillid="<%= @drill.id %>">
<%= render 'assumption_params' %>
</div>
<div class="form">
<div id="place_to_add_projection_results">
<%= render 'evaluation_results' %>
</div>
</div>
контроллер
class DrillsController < ApplicationController
before_filter :current_user
...
def investor
# screens associated allow entry of data as well as display of the results
end
def projection
result_list = Evaluation.generate_projection(@drill.drill_interests, assumption_params)
render json: result_list
end
Любая помощь очень ценится
Pierre
Привет, DevDude, Спасибо, что ответили на вопрос. Я попытался пометить его, но у меня всего 5 репутации (вам нужно 15). – user1854802