【发布时间】:2015-05-03 21:31:30
【问题描述】:
我对使用 ajax 还很陌生,所以我真的希望有任何简单的解决方法。目前发生的事情是我单击“新计划条目”并将一个表单附加到表中(请参阅_form.html.erb)。问题是表格不起作用。提交不起作用,date_picker/time_picker 不显示,HTML5 验证不弹出。我觉得我缺少一个简单的解决方案。
编辑:为了消除混乱,我目前的目标是使用 ajax 渲染部分并让它正常提交,而不是远程提交。如果我在没有 ajax 的情况下呈现表单,它工作正常。此外,如果我将 $('.datetimepicker').datetimepicker(); 添加到 new.js.erb,日期选择器将正常工作。我还删除了 turbolinks,但我仍然遇到同样的问题。
相关宝石
- gem 'turbolinks'
- gem 'jquery-turbolinks'
- gem 'jquery-rails'
new.js.erb
$('#schedule-table-tbody').prepend("<%= j(render partial: 'form') %>");
index.html.erb 的相关部分
<%= link_to 'New Schedule Entry', new_schedule_path, remote: true %>
<div class="table-responsive">
<table id="schedule-table" class="table table-hover table-striped table-condensed">
<thead>
<tr>
<th class="col-xs-2">Date</th>
<th class="col-xs-2">Start Time</th>
<th class="col-xs-2">End Time</th>
<th class="col-xs-6">Details</th>
</tr>
</thead>
<tbody id="schedule-table-tbody">
schedules_controller.rb
class SchedulesController < ApplicationController
respond_to :html, :js
def index
@schedules = Schedule.page(params[:page]).per(20)
end
def show
@schedule = Schedule.find(params[:id])
end
def new
@schedule = Schedule.new
end
def create
@schedule = Schedule.new(schedule_params)
if (@schedule.save)
flash['main|success'] = 'Successfully created schedule entry.'
redirect_to schedules_path
else
render 'index'
end
end
private
def schedule_params
params.require(:schedule).permit(:name, :date, :start_time, :end_time)
end
end
_form.html.erb
<tr>
<%= simple_form_for @schedule do |f| %>
<td>
<%= f.input_field :date, :as => :date_picker, label: false %>
</td>
<td>
<%= f.input_field :start_time, :as => :time_picker, label: false %>
</td>
<td>
<%= f.input_field :end_time, :as => :time_picker, label: false %>
</td>
<td>
<%= f.input_field :name, label: false %>
</td>
<td>
<%= f.button :button, class: "btn btn-primary" do %>
<span class='glyphicon glyphicon-ok'></span> Save
<% end %>
</td>
<% end %>
</tr>
【问题讨论】:
标签: javascript jquery ruby-on-rails ajax ruby-on-rails-4