レポート(金額、日付)を記載したテーブルがあります。ユーザーが日付ピッカーを使用して日付を選択し、ユーザーが選択した日付の間に作成されるレポートを表示するようにします。
したがって、これらの変数をAJAXフォームから渡す必要があります。
AJAXフォームを追加しました。これが私の_form.html.erbです:
<%= form_tag(:controller => "financial_reports", :action => 'report', :remote => true) do%>
<span id="pickers">From</span>
<%= datepicker_input "report","start_date", :dateFormat => "dd/mm/yy" %>
<span id="pickers2">To</span>
<%= datepicker_input "report", "end_date", :dateFormat => "dd/mm/yy"%>
<%= submit_tag "Run Report", :class => "btn super", :id => "btn "%>
そして、私は部分的なものを持っています、それはレポートを示しています。|
_financial_report.erb.html
<table class="table" id="performance_report">
<thead>
<th>Date</th>
<th>Amount</th>
<th>Currency</th>
</thead>
<% @financial_reports.each do |financial_report| %>
<tr>
<td> <%= financial_report.created_at.strftime("%d/%m/%Y")%></td> </td>
<td><%= financial_report.amount %></td>
<td><%= financial_report.currency %></td>
</tr>
<% end %>
<tr>
<td>Total</td>
<td><%= current_user.financial_reports.sum(:amount)%></td>
</tr>
</table>
このパーシャルをindex.erb.htmlにレンダリングしています
<div id="report_form"><%= render 'form' %></div>
<%= render 'financial_report' %>
report.js.erbで、適切なレポートを返したい:
$('.report').apppend('<%= escape_javascript(render(@financial_report)) %>');
これが私のコントローラーです(「どこ」の条件をどこと呼ぶべきかわかりません
def index
@financial_reports = current_user.financial_reports#.where(:created_at => the_start.to_date..the_end.to_date)
...
end
またはここ
def report
@financial_reports = current_user.financial_reports#.where(:created_at => the_start.to_date..the_end.to_date)//here
respond_to do |format|
format.js
end
end
レポートフォームのHTMLは次のとおりです。
<form accept-charset="UTF-8" action="/financial_reports/report?remote=true" method="post">
<input id="report_start_date" name="report[start_date]" size="30" type="text" class="hasDatepicker">
<input id="report_end_date" name="report[end_date]" size="30" type="text" class="hasDatepicker">
と私のルートで:
match 'financial_reports/report' => 'financial_reports#report'
AJAXを使用して変数を取得できます。
$.ajax({
type: 'POST',
url: 'financial_reports/report',
data: {'start_date' : $("input[name='report[start_date]']").val(),
'end_date' : $("input[name='report[end_date]']").val() },
success: function(data){
//data is whatever you RETURN from your controller.
}
});
この問題をどのように解決すればよいですか?たぶん、私はAJAXのものを誤解していますか?
PSレポートアクションを呼び出すと、空白のページが表示されます。