我有一个带有输入和选择的搜索表单,当任何输入/选择被更改时,我运行一些js然后用jquery进行ajax查询.我希望阻止用户在请求进行过程中对表单进行进一步更改,因为他们可以立即启动多个远程搜索,从而有效地导致不同搜索之间的竞争.
似乎最好的解决方案是在等待请求返回时阻止用户与表单交互.目前我正在通过在制作ajax查询之前隐藏表单然后在成功/错误时再次显示它来以最愚蠢的方式执行此操作.这解决了问题,但看起来很糟糕,并不是真的可以接受.是否有另一种更好的方法来阻止与表单的交互?为了使事情变得更复杂,为了允许漂亮的选择,用户实际上与跨越js的跨距进行交互,以将它们绑定到实际的隐藏选择.因此,即使跨度不是输入,它们也包含在表单中并表示表单的实际交互元素.
感谢任何建议 - 最多 这就是我现在正在做的事情:
function submitQuestionSearchForm(){
//bunch of irrelevant stuff
var questionSearchForm = jQuery("#searchForm");
questionSearchForm.addClass("searching");
jQuery.ajax({
async: true,
data: jQuery.param(questionSearchForm.serializeArray()),
dataType: 'script',
type: 'get',
url: "/questions",
success: function(msg){
//more irrelevant stuff
questionSearchForm.removeClass("searching");
},
error: function(msg){
questionSearchForm.removeClass("searching");
}
});
return true;
}
Run Code Online (Sandbox Code Playgroud)
"搜索"类目前只有{display:none}
我使用Authlogic来处理登录/身份验证/会话等,我使用paypal处理我的订阅我的网站的付款.对于试用期已过期的用户,我想在完成PayPal付款流程后自动登录,但我无法知道如何在没有密码的情况下执行此操作.我的流程因此是:
在上面的情况下,因为我将params中的订单令牌收到我的'subscription_complete'页面,我知道用户是刚刚付款的用户,所以我有足够的信息来信任他们,好像他们已经记录因此,我想自动记录它们,即为它们创建一个UserSession记录.但是,问题是我不知道他们的密码(因为密码是单向加密的),我需要密码来创建user_session.
所以,我的问题是:如果我信任当前用户,但不知道他们的密码,我仍然可以记录他们吗?如果是这样,怎么样?
这一直困扰着我.我的所有模型都会出现此问题,但我会使用其中一个,测验,作为示例.
测验具有以下验证:
validates_presence_of :size, :style
Run Code Online (Sandbox Code Playgroud)
我正在使用I18n,我在我的翻译文件中有以下设置:(这些只是标准的错误消息,但我已将它们包含在我的en.yml中,以便很容易看到结构,如果我想要为任何特定型号覆盖它们)
activerecord:
errors:
messages:
inclusion: "{{attribute}} is not included in the list"
invalid: "{{attribute}} is invalid"
empty: "{{attribute}} can't be empty"
blank: "{{attribute}} can't be blank"
record_invalid: "Validation failed: {{errors}}"
Run Code Online (Sandbox Code Playgroud)
问题是这样的:如果我做一个新的测验,验证失败,那么看看quiz.errors.full_messages,每个错误消息都有属性然后是完整的消息:
>> quiz = Quiz.create
=> <unsaved quiz object>
>> quiz.errors.full_messages
=> ["Size Size can't be blank", "Style Style can't be blank"]
Run Code Online (Sandbox Code Playgroud)
我不明白为什么消息是,例如,"Size Size can't be blank"而不是"Size can't be blank"
任何人的想法?
我刚刚用回形针将视频上传添加到我在Heroku上的Rails 3应用程序中.它工作正常,但我不知道如何为视频生成缩略图.我想我应该在heroku中使用其中一个视频处理插件?
哪些建议最容易连接到Paperclip?
Rails 3问题.
如果我发送这样的请求 PUT http://myapp/posts/123?post[title]=hello
然后在我的控制器中我得到了 params = {:id => 123, :post => {:title => "hello"}}
这通常很好,通常对例如有用 Post.create(params[:post])
但是,在这种情况下我需要访问params的'raw'形式,所以我可以命令它们取出值,将它们全部作为简单的字符串处理,即我希望它们列出,所以param名称是"post[title]"和param价值是"hello".
有没有办法得到这些价值观?我想可能有一种方法,request它有原始的拉丝形式的参数,但我找不到一个.
我试图将哈希转换回带有to_param的字符串,但这看起来很脏但可能是不必要的.
作为奖励,我希望它忽略:id参数,字面上只是参加了之后的部分?在原始请求中.事实上,如果我可以回到原始请求字符串,即"http://myapp/posts/123?post[title]=hello"那样做:我可以拆分?并从那里拿走它.我刚刚想到我可以从标题中得到它.在此期间,如果有人知道更好的方式,请告诉我,请:)
感谢任何建议 - 最多
我有一个内联,如果没有按照我的想法进行操作,为了清晰起见,我已将其提取到控制台示例中.
我认为内联if在语法上与多行if相同,但它看起来并非如此.
foo = "chunky"
(bar1 = foo) if (!defined?(bar1) && foo)
bar1
Run Code Online (Sandbox Code Playgroud)
在这种情况下,bar1最终设置为nil.如果我重组它
foo = "chunky"
if !defined?(bar2) && foo
bar2 = foo
end
bar2
Run Code Online (Sandbox Code Playgroud)
然后它工作 - bar2设置为"chunky"(我在第二个例子中使用了bar2而不是bar1,以确保我在每种情况下都使用了未定义的变量).
是不是内联如果总是将bar1设置为某个东西,默认为零?我认为它只是在if之前没有评估部分,如果if测试返回falsy.
我有一个Foo类(好吧,一个伪类)设置如下:
--in foo.lua
Foo = {}
--constructor
function Foo:new(x, y)
--the new instance
local foo = display.newImage("foo.png")
-- set some instance vars
foo.x = x
foo.y = y
foo.name = 'foo'
--instance method
function foo:speak()
print("I am an instance and my name is " .. self.name)
end
--another instance method
function foo:moveLeft()
self.x = self.x - 1
end
function foo:drag(event)
self.x = event.x
self.y = event.y
end
foo:addEventListener("touch", drag)
return foo
end
--class method
function Foo:speak()
print("I am the class …Run Code Online (Sandbox Code Playgroud) 我有一堆视频要转换,从flv到mp4.在Handbrake gui中,在Ubuntu中,我已经整理了所有设置.我把它保存为一个名为"全平板电脑"的预设.
我需要在不同的ubuntu机器上使用HandBrakeCLI,这只是命令行.所以,我有两个选择,我可以看到,我无法弄清楚如何做其中任何一个:
1)看看手刹gui使用的设置是什么,所以我可以复制它们并直接使用HandBrakeCLI,根据需要替换文件名.
2)以这样的方式保存我的"全片"预设,我可以将其复制到另一台机器并在那里使用HandBrakeCLI.
选项2似乎更好.当我列出HandBrakeCLI中的可用预设时,它不会列出我的自定义预设,建议GUI版本将它们保存到与cli版本不同的地方.
有什么建议?谢谢,马克斯
我有一个url 变量,我想".js"在路径部分之后插入,除非路径后面有".<something>"一部分.
所以,这是一个"硬编码"的数组,包括每个的起始值和预期的最终值,这有助于很好地说明问题:
var url_pairs = [
["http://example.com/foo", "http://example.com/foo.js"],
["http://example.com/foo/bars", "http://example.com/foo/bars.js"],
["http://example.com/foo/bars?quz=baz", "http://example.com/foo/bars.js?quz=baz"],
["http://example.com/foo/bars?quz=baz&qix=bax", "http://example.com/foo/bars.js?quz=baz&qix=bax"],
["/foo", "/foo.js"],
["/foo/bars", "/foo/bars.js"],
["/foo/bars?quz=baz", "/foo/bars.js?quz=baz"],
["/foo/bars?quz=baz&qix=bax", "/foo/bars.js?quz=baz&qix=bax"],
["/foo/bars.js?quz=baz&qix=bax", "/foo/bars.js?quz=baz&qix=bax"],
["/foo/bars.xml?quz=baz&qix=bax", "/foo/bars.xml?quz=baz&qix=bax"]
]
Run Code Online (Sandbox Code Playgroud)
我正在努力想出一个干净而快速的方法来做到这一点,但我确信它可以干净利落地完成,例如使用正则表达式.谁能让我直截了当?谢谢,马克斯
编辑:测试解决方案 - 这是我写的一个代码片段来测试它.
function convertUrl(oldUrl){
//insert code to convert oldUrl and return the result
}
$.each(url_pairs, function(i,pair){
var oldUrl = pair[0];
var expected = pair[1];
var newUrl = convertUrl(oldUrl);
if(newUrl != expected){
console.log("expected \""+expected+"\", but got \""+newUrl+"\"");
}
});
Run Code Online (Sandbox Code Playgroud) 对于当前浏览器是否支持Web Audio Api,有人能告诉我一个简单可靠的测试(在javascript/jquery中)吗?需要在移动设备上工作.
https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API