在页面加载时有条件地显示模态

时间:2016-07-03 17:54:11

标签: ruby-on-rails ruby-on-rails-4 bootstrap-modal

我在我的视图中有一个表单,在提交后,我的控制器验证字段并返回@errors中的错误列表(如果有的话)。

现在,我想在模态中显示这些错误。

以下是我在观点中所拥有的内容:

!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
  <div class="modal-dialog">

    <!-- Modal content-->
    <div class="modal-content">
      <div class="modal-header">
        <%= render 'shared/errors' %>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>

  </div>
</div>

我想在页面加载时显示此模态,当且仅当@errors存在时才会显示。

看起来coffeescripts无法访问控制器传递的变量。

我遇到了一些类似的问题,但似乎没有一个能解决我的问题。

1 个答案:

答案 0 :(得分:0)

你可以在gon gem的帮助下完成这项工作。

  1. 添加&#34; gem&#39; gon&#39;&#34;到您的Gemfile。
  2. 运行捆绑安装。
  3. 在控制器中设置值如下:gon.form_errors = true if if errors.present?
  4. 在所有javascript包含标签之前,在头部分的应用程序布局中添加此行: - 对于rails 4:&lt;%= Gon :: Base.render_data%&gt;并且对于rails 3&lt;%= include_gon%&gt;
  5. 现在您可以在咖啡文件中访问此变量,如下所示:gon.variable_name并像这样使用它:

    if gon.form_errors
    
       $('#your-modal-id').modal('show')