相关疑难解决方法(0)

只在Rails 4应用程序中的页面刷新时加载JQuery

我创建了一个Rails 4应用程序,并为图像弹出效果添加了fancybox库.它工作正常,但只有在页面刷新时.如果用户不刷新页面,则jquery根本不起作用.我尝试用小jquery方法测试它,但所有工作只在页面刷新后才能工作.我也在使用twitter bootstrap.

我的assets/application.js文件:

//= require jquery
//= require jquery_ujs
//= require fancybox
//= require twitter/bootstrap
//= require turbolinks
//= require_tree .


$(document).ready(function() {
  $(".fancybox").fancybox();
    $("#hand").click(function(){
     if($("#check6").is(':visible'))
     {
      $("#check6").hide();
      }
     else
     {
      $("#check6").show();
      }
    });
});
Run Code Online (Sandbox Code Playgroud)

jquery twitter-bootstrap ruby-on-rails-4

78
推荐指数
4
解决办法
3万
查看次数

Rails 5:如何使用带有turbo-links的$(document).ready()

Turbolinks可防止正常$(document).ready()事件在初始加载之外的所有页面访问时触发,如此此处所述.但是,链接答案中的所有解决方案都不适用于Rails 5.如何像以前的版本一样在每次访问页面上运行代码?

javascript jquery ruby-on-rails turbolinks ruby-on-rails-5

78
推荐指数
4
解决办法
5万
查看次数

Rails 4 turbo-link阻止jQuery脚本工作

我正在构建一个Rails 4应用程序,我有一些分散的js文件,我试图包括"rails方式".我将jquery插件移动到/ vendor/assets/javascripts中,并更新了清单(application.js)以要求它们.当我在本地加载页面时,我看到它们正确显示.

但是,我从其中一个已编译的脚本中获得了不一致的行为.我有一个名为projects.js的特定于控制器的js文件,它通过以下方式在application.js中引用require_tree .:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap.min
//= require jquery.form.min
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

我看到文件被正确包含,并且它的工作时间有一半.另一半时间,projects.js中的东西似乎没有做任何事情(它主要是jquery动画和一些ajax请求).当它不起作用时,我会点击按钮几次,什么都不会发生,然后我会抛出这个错误:

Uncaught TypeError: Cannot read property 'position' of null 
turbolinks.js?body=1:75
Run Code Online (Sandbox Code Playgroud)

当脚本处于各个视图(错误的方式)时,这种情况从未发生过,所以我很确定问题不在于我的javascript代码.另一个可能相关的细节是projects.js中的东西被包装在一个$(document).ready(function(){.此外,我正在开发模式下进行测试,因此javascripts和css不会被资产管道组合.

知道这里发生了什么吗?我是Rails的新手,但我已尽力遵守所有惯例.

更新!

我的项目脚本不起作用时,它是可预测的.第一页加载每次都有效.然后我点击一个链接到一个使用我的project.js行为的新页面,第二个页面永远不会工作.我点击几次,最终抛出上面的错误.我仍然不确定为什么,但我怀疑这与涡轮连接有关.

javascript turbolinks ruby-on-rails-4

47
推荐指数
2
解决办法
3万
查看次数

自定义导轨确认框(使用$ .rails.confirm覆盖)

很长一段时间以来,我一直在修补这个问题.

我想用我自己推出的东西劫持默认的JS确认对话框.我想使用完全自定义的布局(bootstrap(来自twitter)对话框面板).

我所拥有的不起作用.它显示得很好,我可以点击按钮,它会消失.文档说明,如果是Ok,你应该返回true,如果是Cancel,你应该返回false.这很可爱,但它不起作用.看起来我需要一个回调或对最初调用该函数的对象的引用.即使后者也是不可能的,因为$ .rails.confirm只传递消息.

(这个问题的第一个答案非常有趣.我需要一种方法使其成为模态,以便等待返回自定义对话框.)

有人可以指出我正确的方向吗?我觉得我要打一些东西.硬!!jQuery UI只是一个选项,我可以使我的对话框看起来与我现在的对话框完全一样.

这是我有的:

这是放在我的application.erb中

<div id="modal-confirm" class="modal">
  <div class="modal-header">
    <h3>Are you sure?</h3>
    <a href="#" class="close">×</a>
  </div>
  <div class="modal-body">
    <p>{{VALUE}}</p>
  </div>
  <div class="modal-footer">
    <a id="modal-accept" href="#" class="btn primary">OK</a>
    <a id="modal-cancel" href="#" class="btn secondary">Cancel</a>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

javascript.js:

function bootStrapConfirmDialog(message) {
  // get a handle on the modal div (that's already present in the layout).
  d = $("#modal-confirm");
  // replace the message in the dialog with the current message variable.
  $("#modal-confirm div.modal-body p").html(message);
  // offset the …
Run Code Online (Sandbox Code Playgroud)

javascript jquery ruby-on-rails

12
推荐指数
2
解决办法
9572
查看次数

rails 4 turbolinks多重绑定

对此有类似的问题,但它们似乎都是由身体中的javascript标签引起的,在我的情况下我的是在头脑中.我也无法将我的js移动到页面更改块之外(我认为至少我不能)

我遵循rails约定,根据资源在每个文件中包含所有j,并将它们包含在application.js中.

我的js位于头部的布局文件中:

<!DOCTYPE html>
<html> 
 <head>
   <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
Run Code Online (Sandbox Code Playgroud)

我的文件都遵循rails文档中的建议来使用页面更改事件:http://guides.rubyonrails.org/working_with_javascript_in_rails.html#turbolinks

这是一个示例js文件(report.js - 我使用咖啡脚本)

load_reports = ->
      table = $('#reports').DataTable()
      company_input_field = $('#rc-cn-st-input')
      company_input_field.on 'keyup change', ->
        table.column(2).search(@value).draw()
        return

$(document).on('page:change', load_reports)
Run Code Online (Sandbox Code Playgroud)

这一切都很好,直到我使用浏览器后退按钮.一旦我这样做,我每次点击都会触发2次事件.我如何解决这个问题以及遵循的惯例是什么?

在其他情况下,我将我的js移动到页面更改块之外并执行:

$(document).on 'click', 'td.details-control', ->
  # do something
Run Code Online (Sandbox Code Playgroud)

但是在上面的情况下这似乎不实用,我引用的jquery数据表只在一个页面上,只需要在我在该页面上时进行设置.

我确实看过.off()函数,但在这种情况下无法弄清楚如何使用它,我尝试过的所有东西似乎要么删除活动的监听器,要么失败.

jquery turbolinks ruby-on-rails-4

7
推荐指数
1
解决办法
471
查看次数

Ruby on Rails 4 javascript未执行

我有一个自定义js文件app/assets/javascripts.这是js文件:

//app/assets/javascripts/contacts.js
//$(document).ready(function() { //I've already tried with this method

$(window).load(function() {
    alert("foo bar")
});
Run Code Online (Sandbox Code Playgroud)

我需要contacts.js文件中的application.js文件.

如果我检查html页面,我看到正确加载了js文件,但是没有显示该消息.如果我重新加载页面(通过按f5),则正确显示该消息.

当页面加载时,加载了javascript(我可以在浏览器的源代码中看到它)但是没有执行.

你能帮助我吗?

解决方案: Rails 4:如何将$(document).ready()与turbo-links一起使用

javascript ruby ruby-on-rails asset-pipeline ruby-on-rails-4

6
推荐指数
1
解决办法
5118
查看次数

复选框仅适用于第一页 - 数据表,rails

Senario:所以基本上我正在使用DataTables并在其第一列上有复选框.我的DataTables有多个页面(分页).

问题:当我检查页面上的几个框(可能是任何页面)时,还要检查其他页面上的一些框.

如果我在当前页面上,结果只会被保存

我对datatables/javascript很新,并且无法弄清楚如何解决这个问题.

$('#formDataTable').DataTable({
         responsive: true,
         autoWidth: true,
         "bFilter": true,
         "bRetrieve": true,
         "bInfo": true,
         "sPageFirst": false,
         "sPageLast": false,
});
Run Code Online (Sandbox Code Playgroud)

我看过这些SO页面.复选框仅适用于jQuery数据表中的当前分页页面 链接目前已死于此问题 - > 选中复选框的分页.复选框仅适用于当前分页页面.jQuery数据表

javascript ruby-on-rails datatables

6
推荐指数
1
解决办法
7281
查看次数

在 Rails 应用程序中单击更改 div 类

我有一个 rails 应用程序,它按行显示步骤和子步骤。我希望创建一个操作,其中单击步骤行会将其类从“step_container”更改为“step_container active”,然后显示该步骤的相应子步骤行。我很难弄清楚如何使用 AJAX(或了解这是否是最好的工具)来完成此任务。

<% @steps.each do |step| %>
      <div class="step_container"> <!-- add 'active' if clicked-->
        <div class="medium-8 columns"><!-- add 'active_container' if clicked-->
          <div class="medium-5 columns step_info">
            <div class="step_number">
              <span><%= step.order %></span>
            </div>
            <div class="custom_step">
              <span class="step_title"><%= step.title %> (custom step)</span>
              <span class="step_desc"><%= step.description %></span>
            </div>
          </div>
        </div>

        <!-- Only show this div if top div is clicked -->
        <div class="medium-4 columns sub_steps_container">
          <% @substeps.where(step_id: step.id).each do |substep| %>
                  <div class="sub_steps">
                    <div class="step_number">
                      <span><%= substep.order %></span>
                    </div>
                    <div class=""> …
Run Code Online (Sandbox Code Playgroud)

javascript ruby-on-rails

3
推荐指数
1
解决办法
2056
查看次数

Javascript 事件在 Rails 应用程序中多次触发?

我正在尝试设置一个表单,以便当我点击 时它可以通过 ajax 提交enter。为此,我想在输入字段上按下回车键时触发表单提交。然而,如果按住该键超过一瞬间,回车键的 keyup 事件会持续触发多次,进而发送大量 ajax 请求,导致浏览器崩溃。

我不明白为什么该事件不断触发多次。这是页面的视图:

<div class="page-content">
  <div class="l-edit-header">
    <h1>Edit</h1>
    <div class="piece-header">
      <%= image_tag @piece.user.avatar_url(:small), class: "avatar-small" %>
      <div class="piece-header-info">
        <h1><a href="<%= piece_path @piece %>"><%= @piece.title %></a></h1>
        <em>
          By <%= link_to @piece.user.username, user_path(@piece.user) %>
          <%= @piece.created_at.strftime("%B %d, %Y") %>
        </em>
      </div>
    </div>
  </div>

  <div class="l-edit-main">

    <div class="piece-main">
      <%= image_tag @piece.image_url %>
      <p id="piece-description" class="piece-main-description"><%= @piece.description %></p>
      <div class="piece-main-links">
        <%= link_to "Delete", piece_path(@piece), method: :delete if current_user == @piece.user %>
      </div>
    </div>
  </div>

  <div class="l-edit-side"> …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery ruby-on-rails jquery-events

1
推荐指数
1
解决办法
1743
查看次数