此问题似乎与我的相同:Rails turbolinks break submit remote form (This question is also similar,As is this github issue)
然而,那里发布的答案并没有解决我的问题......
在用户显示页面上有一个简单的表单来提交新的待办事项。表单设置为使用AJAX。表单提交在初始页面加载或页面刷新时正常工作。 然而,它根本不起作用(单击“提交”按钮不会执行任何操作,不会在rails中或使用AJAX)在应用程序中的任何位置导航后。含义,一旦有了导航退出节目视图并返回而不刷新页面,单击表单上的提交按钮不会执行任何操作。
以上所引述的问题似乎都表明这是一个涉及turbolinks的问题,但是那里发布的答案要么不起作用,要么我无法理解它们以解决我的问题......
任何帮助都会太棒了!!!
以下是可能有用的代码:
_form.html.erb (rendered in the show view)
<%= form_for [task], remote: true do |f| %>
<tr class="new-task">
<td class="form-group">
<%= f.text_field :name, class: 'form-control', placeholder: "Add new task..." %>
</td>
<td class="form-group">
<%= f.date_field :expires_at, max: Time.now + 7.days, min: Time.now + 1.day %>
</td>
<td class="form-group">
<%= f.submit "Save", class: 'btn btn-success' %>
</td>
</tr>
<% end %>
create method in TasksController
def create
expires_at_format unless params[:task][:expires_at].blank? # adds the current time to a user created date
@task = current_user.tasks.new(task_params)
if @task.save
flash.now[:notice] = "\"#{@task.name}\" added to To-Do list!"
else
if @task.errors.any?
flash.now[:alert] = "Task not saved. #{@task.errors.full_messages.join '. ' }."
else
flash.now[:alert] = "Something went wrong! Your task was not saved... "
end
end
respond_to do |format|
format.html { redirect_to root_path }
format.js
end
end
create.js.erb (AJAX to handle displaying new tasks)
<% if @task.valid? %>
$('.task').children('.expires_at').each(function(){
if ($(this).text() <= "<%= @task.expires_at.to_s %>") {
$(this).parent().before("<%= escape_javascript(render(@task)) %>");
return false;
}
});
$('#task_name').val("");
$('th#task-count').html("You have <%= pluralize(current_user.tasks.unexpired.count, "Task").split.insert(1, "active").join ' ' %>");
$(".flash").html("<div class='alert alert-success'><button type='button' class='close' data-dismiss='alert'>×</button><%= flash.now[:notice] %></div>");
<% else %>
$('#task_name').val("");
$('.flash').html("<div class='alert alert-warning'><button type='button' class='close' data-dismiss='alert'>×</button><%= flash.now[:alert] %></div>");
<% end %>
from application.js
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap
//= require toggleExpired
//= require_tree .
'来自gemfile`
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
答案 0 :(得分:0)
您是否已启用JS调试器/控制台中的持久性登录(因此您可以跨页面加载查看控制台)?在我看来,你有一些破坏执行堆栈的JS错误。具体来说,我会调查jquery.turbolinks(看起来你没有安装它)。
另外,您是否100%自信Turbolinks造成了这个问题?禁用此特定gem可以相当容易地进一步隔离问题。