Tag: javascript

确定rails3 jquery自动完成插件的结果范围

我正在使用https://github.com/crowdint/rails3-jquery-autocomplete ,它似乎正在工作。 唯一的问题是假设我有一个字段在所有post标题上执行自动完成,但我希望它只显示用户创建的post标题。 有没有办法做这样的事情? 即find_by还是什么? 谢谢! -Elliot 编辑 它在文档中说: If you want to display a different version of what you’re looking for, you can use the :display_value option. This options receives a method name as the parameter, and that method will be called on the instance when displaying the results. class Brand < ActiveRecord::Base def […]

JavaScript相当于Ruby的String#scan

这存在吗? 我需要解析一个字符串,如: the dog from the tree 得到类似的东西 [[null, “the dog”], [“from”, “the tree”]] 我可以用Ruby做一个RegExp和String#scan 。 JavaScript的String#match无法处理,因为它只返回RegExp匹配的内容,而不是捕获组,因此返回类似 [“the dog”, “from the tree”] 因为我在Ruby应用程序中多次使用String#scan ,如果有一种快速方法可以在我的JavaScript端口中复制此行为,那将会很好。 编辑:这是我正在使用的RegExp: http : //pastebin.com/bncXtgYA

从ruby访问Javascript变量

将数据从Ruby传递到Javascript很容易,例如: function change_value(val){ alert (“”) } } 这将发送一个警报,其中包含存储在控制器中警报变量的数据。 但是我不知道它是如何在相反的方向上工作的,例如,如果我需要将一个元素id存储到一个控制器变量中: function change_value(element){ alert (“”) } } 真正的交易接下来,由***投降的代码应该是所需的javascript值(@billeable_qts是哈希): function change_value(product){ alert (“product: “) }

有没有办法在HAML的内部使用Ruby循环:javascript区域?

在HAML内部,我们可以在:javascript区域内有一个循环吗? 这将有效: – 10.upto(20) do |i| :javascript document.getElementById(‘aDiv’).innerHTML += ‘#{i}’; 这不会: :javascript – 10.upto(20) do |i| document.getElementById(‘aDiv’).innerHTML += ‘#{i}’; 上面的代码也能使用吗?

为什么浮点数打印得如此不同?

众所周知,(大多数)浮点数不能精确存储(使用IEEE-754格式时)。 所以不应该这样做: 0.3 – 0.2 === 0.1; // very wrong …因为它会导致false ,除非使用了一些特定的任意精度类型/类( Java / Ruby中的 BigDecimal,PHP中的BCMath ,Perl中的Math :: BigInt / Math :: BigFloat ,仅举几例) 。 但我想知道为什么当一个人尝试打印这个表达式的结果时, 0.3 – 0.2 ,脚本语言( Perl和PHP )给出0.1 ,但“虚拟机”( Java , JavaScript和Erlang )给出的更类似于0.09999999999999998 ? 为什么它在Ruby中也不一致? 版本1.8.6( codepad)给出0.1 , 版本1.9.3(ideone)给出0.0999…

如何使用CryptoJS AES解密消息。 我有一个有效的Ruby示例

我可以用Ruby解密AES加密消息,如下所示: require ‘openssl’ require ‘base64’ data = “IYkyGxYaNgHpnZWgwILMalVFmLWFgTCHCZL9263NOcfSo5lBjAzOZAtF5bF++R0Bi+9c9E+p3VEr/xvj4oABtRWVJ2wlWzLbYC2rKFk5iapFhb7uZCUpO4w4Su3a5QFa2vInjYueziRoqySZd/DpstMJ8rsJ94VGizFFFZ1l0sw1ax+wfBAv5+wHs/hlnHi/ea66KBO3rgXKahvV28h+4bh5etc8RCrmiiNbfg6Oj0jQJDjdYIdW8T9YPOI9E1hih8lbfRnMWcOFJgYekfLpoy5LI525UGnlM46J1k6ekLqsn9FqvbiOOoLgqa4YqBm1i9P0ePyjkME+t+RiL8xXX+ItgOYr9G7kM64wlTJPCW8B/crmUdmGzQNC/hD/u/8wfHBS2f8u6OtQMG/+Kpk1oju8lcUZGI/4S8A6/OuktvQr2zgnbs2aADMrM37Oait/pJ3G73S7NwVT8EaK+X43c0C/fUvW2/bD/rqCNpAh9WQlz4Cj6JHwjbmwuind6aCimF1tHjXuR9FXu+g17sPT4ZkKZ6aeBG+m170XdCGn2hVM0wH1rh3VeCG2u/JFqfuGKGSoqeHeNY/icu9pEhtZDzHd7aPoaMXcWvXC9PjooBf7GM1EPacSdnon1kBobjtKSt1l15DjO5TMrJoX7VO7GotQwo+uI/u5Kop01hBXxyxyggl1/8N0ESohPJoqLDrIwvbGK5kW4B49FVPnx9CMvjZDdSsoxPAh+hx6SPe8Hj0Nx4bRs06cbtOkte/V8QSYIqjiJDleEqPrdiKlvgToZz9L29ZR/3Ln65qU1sq7q9c0SEYxIopV7TdTjFS7y76zDPFZkhzc3DjfLtJo/M1hdtt648APcZdmAIgWH6fh3eJZ0qbiPh8RStYH7I2COmnlMw4+t/B5mlhYVSgwPK2Ir736Mh+P9Bw0fF8r9Ghhs4AJzpU0RiK9d1tCsrLfK/hSRwTXhtsSB6eDWEGkO7oeEIz43mgn0sv3SrA9JNHzYkg=” key = “2e35f242a46d67eeb74aabc37d5e5d05” aes = OpenSSL::Cipher::Cipher.new(‘aes-128-cbc’) aes.decrypt aes.key = key.scan(/../).collect{ |x| x.hex }.pack(‘c*’) aes.iv = Base64.decode64(data)[0…16] puts aes.update(Base64.decode64(data)[16..-1]) + aes.final # => JSON data… 作为CryptoJS的新手,我没有把工作替代方案放在一起。 这是我到目前为止所做的: data = “IYkyGxYaNgHpnZWgwILMalVFmLWFgTCHCZL9263NOcfSo5lBjAzOZAtF5bF++R0Bi+9c9E+p3VEr/xvj4oABtRWVJ2wlWzLbYC2rKFk5iapFhb7uZCUpO4w4Su3a5QFa2vInjYueziRoqySZd/DpstMJ8rsJ94VGizFFFZ1l0sw1ax+wfBAv5+wHs/hlnHi/ea66KBO3rgXKahvV28h+4bh5etc8RCrmiiNbfg6Oj0jQJDjdYIdW8T9YPOI9E1hih8lbfRnMWcOFJgYekfLpoy5LI525UGnlM46J1k6ekLqsn9FqvbiOOoLgqa4YqBm1i9P0ePyjkME+t+RiL8xXX+ItgOYr9G7kM64wlTJPCW8B/crmUdmGzQNC/hD/u/8wfHBS2f8u6OtQMG/+Kpk1oju8lcUZGI/4S8A6/OuktvQr2zgnbs2aADMrM37Oait/pJ3G73S7NwVT8EaK+X43c0C/fUvW2/bD/rqCNpAh9WQlz4Cj6JHwjbmwuind6aCimF1tHjXuR9FXu+g17sPT4ZkKZ6aeBG+m170XdCGn2hVM0wH1rh3VeCG2u/JFqfuGKGSoqeHeNY/icu9pEhtZDzHd7aPoaMXcWvXC9PjooBf7GM1EPacSdnon1kBobjtKSt1l15DjO5TMrJoX7VO7GotQwo+uI/u5Kop01hBXxyxyggl1/8N0ESohPJoqLDrIwvbGK5kW4B49FVPnx9CMvjZDdSsoxPAh+hx6SPe8Hj0Nx4bRs06cbtOkte/V8QSYIqjiJDleEqPrdiKlvgToZz9L29ZR/3Ln65qU1sq7q9c0SEYxIopV7TdTjFS7y76zDPFZkhzc3DjfLtJo/M1hdtt648APcZdmAIgWH6fh3eJZ0qbiPh8RStYH7I2COmnlMw4+t/B5mlhYVSgwPK2Ir736Mh+P9Bw0fF8r9Ghhs4AJzpU0RiK9d1tCsrLfK/hSRwTXhtsSB6eDWEGkO7oeEIz43mgn0sv3SrA9JNHzYkg=”; key = “2e35f242a46d67eeb74aabc37d5e5d05”; CryptoJS.AES.decrypt(atob(data).substring(16), key, { iv: atob(cipher).substring(0, 16), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); CryptoJS是否以某种不同的方式期望数据,密钥和初始化向量? 据我所知,IV是数据中的前16个字节。

在Javascript中使用Ruby变量(在App视图中)

目前,我有一个名为@json的视图可访问的ruby变量(其中包含我需要的JSON格式信息) 但是,我想将其传递到脚本区域,例如 //Want @json to be usable here 有没有办法做到这一点?

就像Ruby on Rails中的按钮Ajax一样

我有一个Ruby on Rails项目,其中包括模型User和模型Content等。 我希望用户能够“喜欢”一个内容,并且我已经使用acts_as_votable gem完成了这项工作。 目前,喜欢系统正在运行,但每次按下喜欢按钮(link_to)时我都会刷新页面。 我想使用Ajax来做这件事,以便更新按钮和喜欢的计数器,而无需刷新页面。 在我的Content -> Show视图中,这就是我所拥有的: · users like this Content控制器这样做喜欢/不喜欢: def like @content = Content.find(params[:id]) @content.liked_by current_user redirect_to @content end def dislike @content = Content.find(params[:id]) @content.disliked_by current_user redirect_to @content end 在我的routes.rb文件中,这就是我所拥有的: resources :contents do member do put “like”, to: “contents#like” put “dislike”, to: “contents#dislike” end end 正如我所说,喜欢系统工作正常,但在用户按下之后不会更新喜欢的计数器或类似按钮。 相反,为了欺骗它,我在控制器动作中调用redirect_to @content 。 […]

使用Selenium模仿将文件拖到上传元素上

我有一个网页,当你点击一个按钮时打开一个div。 此div允许您将文件从桌面拖到其区域; 然后该文件上传到服务器。 我正在使用Selenium的Ruby实现。 通过在Firefox中使用JavaScript调试器,我可以看到一个名为“drop”的事件正被传递给某些JavaScript代码“handleFileDrop(event)”。 我认为如果我要创建一个模拟事件并以某种方式触发它我可以触发此代码。 如果发现一篇有趣的文章似乎指向了一个很有希望的方向,但我仍然没有把它全部搞清楚。 我可以使用Selenium的get_eval方法将JavaScript传递给页面。 使用this.browserbot调用方法让我获得了我需要的元素。 所以: 如何构建需要成为模拟放置事件一部分的文件对象? 如何触发掉落事件,使其被拾取,好像我在div中删除了一个文件?