Rails 4 x simple_calendar gem:在日历单元格中创建新记录

时间:2015-10-23 12:37:32

标签: javascript ruby-on-rails ruby-on-rails-4 coffeescript calendar

我有一个带有Post模型和Calendar模型的Rails 4应用:post belongs_to一个calendar和一个calendar has_many posts

Post模型具有自定义:date属性。

帖子显示在两个不同的视图中:

  • 作为标准Calendars#Show视图
  • 中的列表
  • 作为自定义Calendars#Calendar_view视图
  • 中的日历

我想要实现的目的是让用户只需点击Calendars#Calendar_view视图中日历的单元格即可创建新帖子,也就是说转到Posts#New视图,其中新帖子的:date字段将预先填充来自单元格的日期。

我使用calendar_view视图中的simple_calendar gem来显示帖子,其代码如下:

<%= month_calendar events: @posts do |date,posts| %>
  <%= content_tag :div, class: "new-event", data: {date: date} do %>
    <%= date.strftime('%e') %>
    <% posts.each do |post| %>
      <div class="single_event">
        <%= link_to post.subject, post_path(post) %>
      </div>
    <% end %>
  <% end %>
<% end %>

我在posts.coffee文件中使用此代码来检测on click事件并从单元格中获取日期:

$(".new-event").on "click", (e) ->
  date = $(this).data("date")
  window.location = "/posts/new?post[date]=#{date}"

然后,在我的Posts#New操作中,我使用@post = @calendar.posts.new(post_params)从表单中的单元格预加载日期。

问题是:当我点击calendar_view视图中的单元格时,没有任何反应。

我在Chrome中检查了控制台,没有出现错误。

知道这里出了什么问题,或者至少我应该开始调试这个问题了吗?

1 个答案:

答案 0 :(得分:2)

查看此示例:https://github.com/excid3/clickable-simple_calendar

您可以使用此JS来触发重定向。我错误的位置重定向,这个是你想要的:

jQuery ->
  $(".calendar-day").on "click", ->
    date = $(this).data("date")
    location.href = "/meetings/new?meeting[start_time]=#{date}"

这一切都与日历的HTML挂钩:

<%= month_calendar do |day| %>
  <%= content_tag :div, class: "calendar-day", data: {date: day} do %>
    <%= day %>
    <%# Whatever else you want in here %>
  <% end %>
<% end %>

使用strong_params使用param预先填充它的Meetings新操作有一点变化(如果缺少错误也不会抛出错误)。

这应该可以做到!