Ilnar25
@Ilnar25

Как лучше реализовать функцию просмотра всех или своих событий в календаре по щелчку?

0dacad7007694bd4a33f446eccd59596.pngДля отображения календаря применяю гем Fullcalendar.

Есть конечно более сложная и лучшая идея, но к сожалению не могу реализовать пока для меня очень сложная. Опишу если кто то сможет написать код. Один запрос в бд получением всех событий, передать по json дополнительно два атрибута (current_user.id и event.user_id), а дальше по щелчку сделать выборку на js и отобразить отфильтрованные события. Или сразу отправлять две предварительно отсортированные массивы и переключателем производить отображение соответствующих типов(на уровне руби сортировку могу сделать но как на js их отобразить). Если ни кто не сможет реализовать задачу в сложном виде, прошу описать код в js как сделать представление из разных файлов по щелчку. Могу реализовать на двух страницах но это уже совсем плохое решение будет. Если у кого то есть другая более правильная реализация, прошу описать, если не составить Вам большого труда. Спасибо за внимание!
index.json.jbuilder(передача всех событий)
json.array! @events_all do |event|
  json.id event[:id]
  json.title event[:title]
  json.start event[:start].to_time.strftime('%Y-%m-%dT%H:%M:%S')
  if signed_in?
    if event[:user_id] == current_user.id
      json.url edit_event_path(event)
    else
      json.url event_path(event)
    end
  else
    json.url event_path(event)
  end
  json.my_events my_events_path
end

<code lang="ruby">
my_events.json.jbuilder(передача событий только вошедшего пользователя)
json.array! @events_all do |event|
  json.id event[:id]
  json.title event[:title]
  json.start event[:start].to_time.strftime('%Y-%m-%dT%H:%M:%S')
  json.url edit_event_path(event)
end
</code>

<code lang="javascript">
fullcalendar.js
var calendar;
calendar = function (){
  $(function () {
    $('#calendar').fullCalendar({

      customButtons: {
        myCustomButton: {
          text: 'my event',
          click: function() {
            /*здесь хочу пояснение*/
            })
          }
        }
      },

      header: {
        left: 'title',
        right: 'myCustomButton, today, prev, next'
      },

      buttonText: {
        today: "Сегодня"
      },
      monthNames: ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'],
      dayNamesShort: ["ВС","ПН","ВТ","СР","ЧТ","ПТ","СБ"],
      selectable: true,
      selectHelper: true,
      editable: true,
      eventLimit: true,
      events: '/events.json',
      eventClick: function(event) {
        event.url
      }
    });
  });
};

$(document).on('turbolinks:load', calendar);

</code>
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ответы на вопрос 1
@SunRaDev
anonim
Не очень понял смысл вашего вопроса. Сделайте post запрос в контроллер, где будет происходить нужна выборка, через ajax, полученный json распарсите, а затем отобразите данные в popup. В этом нет ничего сложного.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы