大家好.我有一个表单,当各种元素发生变化时,它会被远程提交.特别是在搜索字段上,我使用密钥来检测字段中的文本何时发生变化.这个问题是当有人输入"鸡"时,表单会被提交七次,只有最后一次计数.
什么会更好是这样的
检测到密钥 - 开始等待(一秒钟)
检测到另一个密钥 - 重启等待时间
等待完成 - 获取价值并提交表格
在我离开并编写我自己的版本之前(我真的是一个只有一点js的后端人,我用jquery来处理所有事情),是否已有现有解决方案?这似乎是一个普遍的要求.一个jquery插件可能吗?如果没有,最简单和最好的方法是什么?
谢谢,最大
更新 - 为Dan添加的当前代码(下)
丹 - 这可能是相关的.我正在页面上使用的一个jquery插件(tablesorter)需要这个文件 - "tablesorter/jquery-latest.js",如果包含它,会导致与您之前的代码相同的错误:
jQuery("input #search").data("timeout",null)未定义 http://192.168.0.234/javascripts/main.js?1264084467 第11行
也许在不同的jquery定义之间存在某种冲突?(或者其他的东西)
$(document).ready(function() {
//initiate the shadowbox player
// Shadowbox.init({
// players: ['html', 'iframe']
// });
});
jQuery(function(){
jQuery('input#search')
.data('timeout', null)
.keyup(function(){
jQuery(this).data('timeout', setTimeout(function(){
var mytext = jQuery('input#search').val();
submitQuizForm();
jQuery('input#search').next().html(mytext);
}, 2000)
)
.keydown(function(){
clearTimeout(jQuery(this).data('timeout'));
});
});
});
function submitQuizForm(){
form = jQuery("#searchQuizzes");
jQuery.ajax({
async:true,
data:jQuery.param(form.serializeArray()),
dataType:'script',
type:'get',
url:'/millionaire/millionaire_quizzes',
success: function(msg){
// $("#chooseQuizMainTable").trigger("update");
}
});
return …
Run Code Online (Sandbox Code Playgroud) 我对rails中的时区感到有点困惑.我希望我的rails应用程序在我的模型中的updated_at和created_at中设置的时间戳使用英国夏令时(如美国的夏令时).我改变了我的环境.rb说
config.time_zone = 'London'
Run Code Online (Sandbox Code Playgroud)
我的应用程序所在的ubuntu服务器似乎在时间上使用BST:例如,在命令行中,如果我输入'date',我会得到当前时间(不是一小时的偏移量).在rails控制台中,我看到以下内容:
>> time = Time.now
=> Wed Oct 27 16:29:17 +0100 2010
>> time.zone
=> "BST"
Run Code Online (Sandbox Code Playgroud)
一切都很好.但是,如果我创建一个新的AR模型对象并保存它,时间戳是从一小时前开始的.所以,看起来这是使用UTC.现在,我可以看到这里的逻辑:由于时间戳可能在模型逻辑中使用,您希望它们基于不变的尺度时间,即UTC.但是,这是一个奇怪的行为,我不明白:
#change a record and save it
>> someobj.save
=> true
#object's updated_at is one hour ago
>> someobj.updated_at
=> Wed, 27 Oct 2010 15:34:22 UTC +00:00
>> Time.now
=> Wed Oct 27 16:34:31 +0100 2010
#however, Time.now - object's updated at is just a few seconds.
>> Time.now - someobj.updated_at
=> 15.305549
Run Code Online (Sandbox Code Playgroud)
因此,在进行减法之前,updated_at将转换为当前时区.
我想在当前时区显示日期的原因仅在于视图中的状态报告等:如果有人更新某些内容,我希望他们看到它在1分钟前更新,而不是"一小时前".
谁能让我不相信?干杯,最大
编辑:通过使用调整时区的'time_ago_in_words'帮助程序解决了我在状态中显示正确时间的直接问题.我仍然希望有人来解释时间戳发生了什么:)
我正在使用rails 2.3.4,当你在form_for中的'f'对象上调用.check_box时,为'checked'值创建一个可见的复选框输入,并为'unchecked'值创建一个隐藏的复选框输入:http://railsbrain.com/api/rails-2.3.2/doc/index.html?a=M002434&name=check_box
这个问题是我在check_box上有一个validates_acceptance_of验证,如果没有检查,我得到一个包围可见复选框和隐藏复选框的field_with_errors div,以便错误消息出现两次.
在这个例子中,我不希望在'未经检查'的情况下传递一个值,所以我不希望rails添加隐藏的复选框 - 这(关闭隐藏的复选框)将解决我的问题.我无法弄清楚如何告诉它不添加隐藏的复选框.有人能告诉我吗?
我知道我可以通过制作一个check_box_tag来解决这个问题,它不会添加隐藏的"未选中"案例复选框,但是如果没有选中,我不会在复选框中包含field_with_errors.分配隐藏的领域似乎是最干净的解决方案.
谢谢 - 最多
在我的一个rails应用程序中,当我粘贴文本,键入和(特别是)删除文本时,控制台开始运行得非常慢.我可以在顶部看到irb正在使用大量的cpu.但我不知道如何进一步诊断这个问题.它刚刚开始发生在几个星期前.我想知道它是否可能与readline/wirble相关?我用这两个.
我只是在另一个应用程序中尝试过,粘贴在一个文本块中,看起来同样糟糕 - 文本以每秒一个字符的速率出现!也许我的命令行历史已经填满了什么?我怎么能删除它?(对于rails控制台,而不是我的bash命令行历史记录)
感谢任何建议 - 最多
编辑 - 抱歉,应该提供一些系统详细信息.干得好:
System - Ubuntu 10.04
Ruby version - ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux]
Run Code Online (Sandbox Code Playgroud)
我只是尝试了简单的irb,我有同样的问题.它甚至可能更慢,在我粘贴的文本块中途停止测试时,它几乎停了下来.
我重启了很多次(我的笔记本电脑电池已经无法启动,因此无论如何我每次拔掉电源都要重新启动).
我不是一个虚拟机器人.
我最近开始使用RVM(ruby版本管理器),它似乎与此相符,尽管它可能只是巧合.有问题的控制台正在使用系统红宝石发生,但不是rvm.
这是以下输出ps aux | grep irb
:
max 12583 0.0 0.0 1756 484 pts/7 S+ Apr11 0:00 sh -c irb -r irb/completion -r "/home/max/work/rails_apps/millionaire_container/millionaire/config/environment" -r console_app -r console_with_helpers --simple-prompt
max 12584 15.9 2.7 61872 56956 pts/7 S+ Apr11 158:26 irb
max 13981 64.4 0.9 20080 18708 pts/9 R+ 09:40 29:51 irb
max 14625 …
Run Code Online (Sandbox Code Playgroud) 我继承了一个Rails(3)应用程序,并试图掌握现有的Cucumber测试.我在应用程序的'features'文件夹中有以下设置(我错过了任何不相关的文件,例如额外的功能和步骤)
/features
/people
new-person.feature
/step_definitions
people_steps.rb
web_steps.rb
/support
env.rb
paths.rb
selectors.rb
Run Code Online (Sandbox Code Playgroud)
如果我运行'rake',它会运行features/people/new-person.feature中的所有功能,正确使用step_definitions中列出的步骤.
但是,我不想每次都运行rake因为它需要太长时间,我只想在Cucumber中运行一个特定的测试,例如 cucumber features/people/new-person.feature -l 8
当我这样做时,它运行该功能但尚未加载步骤.我得到了回报:
Using the default profile...
Feature: Add a new person
In order to allocate tasks to people
As a community manager
I want to add a new person
Scenario: Secondary navigation should contain "Add new person" # features/people/new-person.feature:8
Given I am on the new person page # features/people/new-person.feature:9
Undefined step: "I am on the new person page" (Cucumber::Undefined)
features/people/new-person.feature:9:in `Given I am on …
Run Code Online (Sandbox Code Playgroud) 我在git中获取此信息
>git status
# On branch master
# Your branch is ahead of 'origin/master' by 3 commits.
#
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)
并且,当我尝试推动时,我得到了这个:
fatal: failed to write object
error: unpack failed: unpacker exited with error code
To ssh:<my repository>
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'ssh:<my repository>'
Run Code Online (Sandbox Code Playgroud)
我一直在谷歌上搜索一下,(例如这里有一个关于它的stackoverflow问题 - 'git pull origin mybranch'让本地mybranch N在原点之前提交.为什么?)并且一般的建议似乎是做拉然后一个推.但这对我不起作用 - 拉动告诉我,我是最新的.我也试过'git fetch origin'(没什么).我也尝试过:
> git remote …
Run Code Online (Sandbox Code Playgroud) 在MySQL 5.6数据库,我有表tablename
已经(包括人)三TEXT
列:col_a, col_b, col_c
。
我想从这三列中提取至少5个字符的所有唯一单词(单词之间用空格分隔)。“单词”是指任何非空格字符字符串,例如“ foo-123”和“ 099423”都是单词。这些列都是utf8格式的InnoDB列。
是否有单个查询可以执行此操作?
编辑:根据要求,下面是一个示例:(在实际数据中,col_a,col_b和col_c是TEXT字段,可能包含大量单词。)
select id, col_a, col_b, col_c from tablename;
id | col_a | col_b | col_c
----|--------------------|----------------|----------------------
1 | apple orange plum | red green blue | bill dave sue
2 | orange plum banana | yellow red | frank james
3 | kiwi fruit apple | green pink | bill sarah-jane frank
expected_result: ["apple", "orange", "banana", "fruit",
"green", "yellow", "frank", "james", "sarah-jane"]
Run Code Online (Sandbox Code Playgroud)
我不在乎结果的顺序。谢谢!
编辑:在上面的示例中,所有内容都是小写字母,因为这就是我将所有内容存储在与该问题相关的真实表中的方式。但是,为了争辩,如果它确实包含一些大写字母,我希望查询忽略大写字母(这是我的数据库配置的设置)。
EDIT2:如果有帮助,则所有文本列上均具有FULLTEXT索引。
EDIT3:这是创建示例数据的SQL: …
我有一个页面,用户可以使用按钮编辑各种内容,并选择触发ajax调用.特别是,一个动作导致一个url被远程调用,有一些数据和一个'put'请求,(因为我正在使用一个宁静的rails后端)触发我的更新操作.我还有一个删除按钮,它调用相同的URL,但有一个'删除'请求.'update'ajax调用适用于所有浏览器,但'delete'调用在IE中不起作用.我有一种模糊的记忆,在遇到这样的事情之前......任何人都可以放弃任何光明吗?这是我的ajax电话:
//update action - works in all browsers
jQuery.ajax({
async:true,
data:data,
dataType:'script',
type:'put',
url:"/quizzes/"+quizId+"/quiz_questions/"+quizQuestionId,
success: function(msg){
initializeQuizQuestions();
setPublishButtonStatus();
}
});
//delete action - fails in ie
function deleteQuizQuestion(quizQuestionId, quizId){
//send ajax call to back end to change the difficulty of the quiz question
//back end will then refresh the relevant parts of the page (progress bars, flashes, quiz status)
jQuery.ajax({
async:true,
dataType:'script',
type:'delete',
url:"/quizzes/"+quizId+"/quiz_questions/"+quizQuestionId,
success: function(msg){
alert("success");
initializeQuizQuestions();
setSelectStatus(quizQuestionId, true);
jQuery("tr[id*='quiz_question_"+quizQuestionId+"']").removeClass('selected');
},
error: function(msg){
alert("error:" + msg);
}
});
} …
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何在mysql中以毫秒或微秒为单位获取加载时间
我正在比较一些不同的方法来直接在控制台上使用mysql获取一些数据,使用SQL_NO_CACHE选项确保mysql每次都保持运行完整的查询.Mysql给我的执行时间以秒为单位,小数点后两位.我真的希望以毫秒(最好是一个或两个小数位)得到结果,以便更好地了解改进(或缺少).我可以在mysql中设置一个选项来实现这个目的吗?
谢谢,最大
我正在使用REXML构建一个xml文档,并希望以特定方式输出到文本.doc是一个CuePoint标签列表,我用Element.new和add_element生成的那些标签都拼凑成一行如下:( stackoverflow在这里将它们分成两行,但想象下面的全部是一条线):
<CuePoint><Time>15359</Time><Type>event</Type><Name>inst_50</Name></CuePoint><CuePoint><Time>16359</Time><Type>event</Type><Name>inst_50</Name></CuePoint>
当我将它们保存到文件时,我希望它们看起来像这样:
<CuePoint>
<Time>15359</Time>
<Type>event</Type>
<Name>inst_50</Name>
</CuePoint>
<CuePoint>
<Time>16359</Time>
<Type>event</Type>
<Name>inst_50</Name>
</CuePoint>
Run Code Online (Sandbox Code Playgroud)
我尝试将.write函数传递给值2,以缩进它们:这会产生以下结果:
xml.write($stdout, 2)
产生
<CuePoint>
<Time>
15359
</Time>
<Type>
event
</Type>
<Name>
inst_50
</Name>
</CuePoint>
<CuePoint>
<Time>
16359
</Time>
<Type>
event
</Type>
<Name>
inst_50
</Name>
</CuePoint>
Run Code Online (Sandbox Code Playgroud)
这是不需要的,因为它已经将空白插入到只有文本的标签内容中.即Name标签的内容现在是"\n inst_50 \n"或其他东西.这将会破坏读取xml的应用程序.
有谁知道我怎么能按照我想要的方式格式化输出文件?
感谢任何建议,最多
编辑 - 我刚刚通过另一个StackOverflow帖子在ruby-forum上找到答案:http://www.ruby-forum.com/topic/195353
formatter = REXML::Formatters::Pretty.new
formatter.compact = true
File.open(@xml_file,"w"){|file| file.puts formatter.write(xml.root,"")}
Run Code Online (Sandbox Code Playgroud)
这会产生类似的结果
<CuePoint>
<Time>33997</Time>
<Type>event</Type>
<Name>inst_45_off</Name>
</CuePoint>
<CuePoint>
<Time>34080</Time>
<Type>event</Type>
<Name>inst_45</Name>
</CuePoint>
Run Code Online (Sandbox Code Playgroud)
CuePoint标签之间没有额外的界限,但这对我来说很好.我将这个问题留在这里以防万一其他人偶然发现它.