【问题标题】:Rails: page is idle and unclickable after modal form submitRails:模态表单提交后页面处于空闲状态且不可点击
【发布时间】:2019-03-09 10:57:02
【问题描述】:

我在 `bootstrap modal 中有一个表单:

<div class="modal fade" id="form_modal" tabindex='-1'>
  <%= simple_form_for @detail_question, remote: true do |f| %>
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <h4 class="modal-title">Question</h4>
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        </div>
        <div class="modal-body">
          <%= f.error_notification %>
          <div class="form-inputs">
            <span> <span id="characterLeft"></span>.</span>
            <%= f.input :content, label: false %>

          </div>
          <div id="formModal">
            <%= render partial: 'layouts/messages' %>
          </div>
        </div>
        <div class="modal-footer">
          <%= f.button :submit, "Ask", class:" btn btn-primary" %>
        </div>
      </div>
    </div>
  <% end %>
</div>

控制器创建方法:

def create
  @detail_question = DetailQuestion.new(question_params)

  respond_to do |format|
    if @detail_question.save
      flash.now[:success] = "Question was successfully sent!"
      format.js { render 'create.js.erb' }
    else
      flash.now[:alert] = "Something went wrong!"
      format.js { render 'create.js.erb' }
    end
  end
end

create.js.erb

<% if @detail_question.save %>
  $("#flash").html("<%= escape_javascript(render partial: 'layouts/messages') %>");
  $("#detail_questions_<%= @detail_question.product.id %>").html("<%= escape_javascript(render partial: 'detail_questions/detail_questions', locals: { product: @detail_question.product } ) %>");
<% else %>
$("#formModal").html("<%= escape_javascript(render partial: 'layouts/messages') %>");
<% end %>

当我提交表单时,模式会关闭并创建问题,呈现 Flash 消息,并且还会呈现部分内容,就像它假设的那样。但我遇到的唯一错误......是页面加载为不可点击和空闲,请看下面的图片。

知道我做错了什么吗?

【问题讨论】:

  • js控制台有错误吗?您的 Rails 服务器日志中有什么内容用于创建操作?
  • 感谢@Vasilisa 的回复,不,绝对没有……这是奇怪的部分,它应该完全渲染部分。知道可能出了什么问题吗?
  • 嘿@Vasilisa,你认为这个问题是因为turbolinks吗?
  • 不确定。尝试从create.js 中删除所有内容并仅保留alert('It works')
  • 我做到了,并且在我提交表单时确实显示了警报。

标签: ruby-on-rails ajax


【解决方案1】:

长话短说 - 问题出在模态背景中。添加解决

$('#form_modal').modal('hide') 
$('.modal-backdrop').remove(); 

创建.js.rb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-30
    • 2016-07-20
    • 2016-01-01
    • 2013-08-29
    • 2012-07-24
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多