Rails 4 x simple_calendar gem:点击日历单元格创建新记录
Rails 4 x simple_calendar gem: create new record on click in calendar cell
我有一个 Rails 4 应用,有一个 Post
模型和一个 Calendar
模型:一个 post
belongs_to
一个 calendar
和一个 calendar
has_many
posts
.
Post
模型具有自定义 :date
属性。
帖子以两种不同的视图显示:
- 作为标准
Calendars#Show
视图中的列表
- 作为自定义
Calendars#Calendar_view
视图中的日历
我想要实现的是,让用户只需单击 Calendars#Calendar_view
视图中的日历单元格即可创建新的 post,也就是说去Posts#New
视图,其中新 post 的 :date
字段将预先填充单元格中的日期。
我在 calendar_view
视图中使用 simple_calendar gem 来显示 posts,代码如下:
<%= 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中的控制台,没有出现错误。
知道这里出了什么问题,或者至少我应该从哪里开始调试它?
看看这个例子: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 使用参数预填充它的 Meetings 新操作有一点变化(如果它丢失也不会抛出错误)。
这应该可以解决问题![=13=]
我有一个 Rails 4 应用,有一个 Post
模型和一个 Calendar
模型:一个 post
belongs_to
一个 calendar
和一个 calendar
has_many
posts
.
Post
模型具有自定义 :date
属性。
帖子以两种不同的视图显示:
- 作为标准
Calendars#Show
视图中的列表 - 作为自定义
Calendars#Calendar_view
视图中的日历
我想要实现的是,让用户只需单击 Calendars#Calendar_view
视图中的日历单元格即可创建新的 post,也就是说去Posts#New
视图,其中新 post 的 :date
字段将预先填充单元格中的日期。
我在 calendar_view
视图中使用 simple_calendar gem 来显示 posts,代码如下:
<%= 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中的控制台,没有出现错误。
知道这里出了什么问题,或者至少我应该从哪里开始调试它?
看看这个例子: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 使用参数预填充它的 Meetings 新操作有一点变化(如果它丢失也不会抛出错误)。
这应该可以解决问题![=13=]