データベースのイベントを表示するために FullCalendar プラグインを使用しています。イベントをインスタンス変数に格納し、View に表示します。ユーザーはドロップダウン メニューからオプションを選択でき、そのオプションに応じてイベントがフィルタリングされます。問題は、そのフィルタリングができないことです。私はすでに数日試しています。
これは私のルート「ホーム」ビューです:
<script type="text/javascript">$(document).ready(function() {
setCalendar(<%= @doctors.first.id %>);
$("#doctor_id").change(function() {
var selectedVal = $(this).val();
setCalendar(selectedVal);
});
function setCalendar(doctor_id){
$.ajax({
type: 'GET',
url: "/appointments",
data: "doctor_id=" + doctor_id,
dataType: "json",
success: function(data) {
alert(data[0].id);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus);
console.log(errorThrown);
}
})
// page is now ready, initialize the calendar...
$('#calendar').fullCalendar({
editable: true,
disableResizing: true,
disableDragging: true,
events:
[
<% @appointments.each do |appointment| %>
{
id : "<%= appointment.id %>",
title : "Reserved",
start : "<%= appointment.start_date.in_time_zone.strftime '%Y-%m-%dT%H:%M:%S' %>",
end : "<%= appointment.end_date.in_time_zone.strftime '%Y-%m-%dT%H:%M:%S' %>",
allDay : false
},
<% end %>
],
...
コントローラ:
class StaticController < ApplicationController
def home
if params[:doctor_id]
@appointments = Appointment.where(doctor_id: params[:doctor_id])
else
@appointments = Appointment.all
end
@doctors = Doctor.all
end
end
私のルート:
root 'static#home'
match '/appointments', to: 'static#home', via: 'get'
問題は、フィルターが機能しないことです。インスタンス変数「@appointments」には常にすべてのイベントが含まれ、すべてのイベントがカレンダーに表示されます。このコード内で何が間違っているのでしょうか?
ありがとうございました。