我有一个带有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中检查了控制台,没有出现错误。
知道这里出了什么问题,或者至少我应该开始调试这个问题了吗?
答案 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新操作有一点变化(如果缺少错误也不会抛出错误)。
这应该可以做到!