我有几个设计用AJAX调用的页面 - 如果它们无法显示,我会让它们返回异常状态代码,我的javascript会相应地显示错误框.
例如,如果用户未经过身份验证或其会话超时并且他们尝试调用其中一个AJAX页面,则会返回401 Unathorized
.
500 Internal Server Error
如果服务器端发生了奇怪的事情,我也有一些回报.
如果在没有必要参数的情况下调用其中一个页面,我应该返回什么状态代码?(因此不能返回任何内容).
我查看了有关HTTP状态代码的维基百科文章,但我能找到的最接近的代码是我正在寻找的代码:
422
不可处理的实体请求格式正确,但由于语义错误而无法遵循.
编辑:上面的代码是特定于WebDAV的,因此在这种情况下不太合适
谁能想到适当的代码才能返回?
这两个文件的perl单行显示行如何共同?
perl -ne 'print if ($seen{$_} .= @ARGV) =~ /10$/' file1 file2
Run Code Online (Sandbox Code Playgroud) 我有一个脚本迭代使用ObjectSpace#each_object
没有args.然后它打印每个类存在多少个实例.
我意识到有些类重新定义了#class
实例方法,所以我必须找到另一种方法来获得实际的类; 假设它存储在变量中"klass"
,并且klass === object
是真的.
在Ruby 1.8中我可以做到这一点,假设Object
没有monkeypatched:
Object.instance_method(:class).bind(object).call
Run Code Online (Sandbox Code Playgroud)
这适用于以下ActiveSupport::Duration
情况:
# Ruby 1.8
# (tries to trick us)
20.seconds.class
=> Fixnum
# don't try to trick us, we can tell
Object.instance_method(:class).bind(20.seconds).call
=> ActiveSupport::Duration
Run Code Online (Sandbox Code Playgroud)
但是,在Ruby 1.9中,这不再起作用:
# Ruby 1.9
# we are not smart...
Object.instance_method(:class).bind(20.seconds).call
TypeError: bind argument must be an instance of Object
from (irb):53:in `bind'
from (irb):53
from /Users/user/.rvm/rubies/ruby-1.9.2-p0/bin/irb:17:in `<main>'
Run Code Online (Sandbox Code Playgroud)
事实证明,这是ActiveSupport::Duration
子类ActiveSupport::BasicObject
.后者::BasicObject
在Ruby 1.9中是子类,因此 …
从Rust书中了解如何改变struct字段:
let mut point = Point { x: 0, y: 0 };
point.x = 5;
Run Code Online (Sandbox Code Playgroud)
然后:
可变性是绑定的属性,而不是结构本身的属性.
这对我来说似乎是违反直觉的,因为我point.x = 5
看起来并不像重新绑定变量point
.有没有办法解释这个,所以它更直观?
我能绕过这个问题的唯一方法就是"想象"我正在用不同的值重新绑定point
到原始副本(甚至不确定是否准确).Point
x
这个问题基于2篇文章:
- 来自37signals的DHH的Basecamp Next
- Adam Hawkins 在Rails中的高级缓存
我对使用俄罗斯娃娃缓存的性能影响有点困惑,具体来说:
使用自动过期密钥时,似乎每个请求都会导致访问数据库以获取对象时间戳 - 我错过了什么吗?(我知道在最好的情况下,你必须只为层次结构中的顶级键做到这一点,但仍然......)
在第1篇文章中,他们缓存了一个待办事项列表,以及每个待办事项.缓存列表非常有意义,因为它节省了大量工作(所有项目的数据库查询).但为什么要缓存单个项目?您已经访问数据库以获取Item时间戳,那么您究竟要保存什么?生成一些html行?
在第二篇文章中,Adam缓存了这样的视图块:
cache [post, 'main-content']
...
cache [post, 'comments']
当添加注释时,它会更改帖子的时间戳,因此会使两个entires无效.但是,main-content
没有改变 - 你不想再生它!如何才能使评论无效.(这实际上是一个非常常见的用户案例 - 一个具有一些逻辑上独立的部分的模型:对象本身,不同的关联,某些其他商店中的数据等)
对我来说,只有当你有一个深层次的嵌套对象时,俄罗斯玩偶缓存才有意义.(在basecamp中你有project-> todos list - > todo - > items list).但是,如果您的层次结构较浅,则最好自己进行无效.
对于任何反馈,我们都表示感谢!
谢谢.
这个RabbitMQ页面说明:
队列名称最多可包含255个字节的UTF-8字符.
在ruby(1.9.3)中,如何通过字节计数截断UTF-8字符串而不会破坏字符中间?结果字符串应该是符合字节限制的最长有效UTF-8字符串.
我正在尝试使用bash打开一个新的描述符来编写额外的诊断消息.我不想使用stderr,因为stderr应该只包含bash调用的程序的输出.我还希望我的自定义描述符可由用户重定向.
我试过这个:
exec 3>/dev/tty
echo foo1
echo foo2 >&2
echo foo3 >&3
Run Code Online (Sandbox Code Playgroud)
但是当我尝试重定向fd 3时,输出仍然写入终端.
$ ./test.sh >/dev/null 2>/dev/null 3>/dev/null
foo3
Run Code Online (Sandbox Code Playgroud) 我看到警报窗口和新行有很多不同的问题.大多数是\n
在PHP中被认为是新行,而不是被发送到javascript.
在我的例子中,字符串正在显示的新窗口中输出\n
.我只是尝试\n
通过jsfiddle 写入一个警告框,这很有用,所以它一定是我做事的方法......
这是返回控制台的字符串.如你所见,\n肯定存在:
Username is required\nPassword is required\nEmail is required\nPhone is required\nCardnumber is required
但是,它显示如下:
为什么会这样?我认为这可能与数据类型有关,因为它是从中返回的$.ajax
if (canAjax && !try_ajax) {
e.preventDefault();
$.ajax({
type: "POST",
url: "mobilesubmit.php",
data: {"use_ajax": true, "formdata": $("#register_form").first().serializeArray()},
success: function(data) {
// This stupid thing should make new lines!
alert(data);
console.log(data);
},
error: function (request, status, error) {
try_ajax = true;
$("#register_form").submit();
}
});
}
Run Code Online (Sandbox Code Playgroud) 是否有任何计划实现类似于在方法参数列表中指定实例变量名称的CoffeeScript功能的ruby行为?喜欢
class User
def initialize(@name, age)
# @name is set implicitly, but @age isn't.
# the local variable "age" will be set, just like it currently works.
end
end
Run Code Online (Sandbox Code Playgroud)
我知道这个问题:在Ruby中我可以在initialize方法中以某种方式自动填充实例变量吗?,但所有的解决方案(包括我自己的)似乎都不符合ruby简单哲学.
并且,这种行为会有任何缺点吗?
UPDATE
其中一个原因是红宝石社区的DRY(不要重复自己)哲学.我经常发现自己需要重复参数变量的名称,因为我希望将它分配给同名的实例变量.
def initialize(name)
# not DRY
@name = name
end
Run Code Online (Sandbox Code Playgroud)
我能想到的一个缺点是,如果一个方法没有正文,它可能看起来就像什么都没做.如果您正在快速扫描,这可能看起来像一个无操作.但我认为,只要有时间,我们就可以适应.
另一个缺点:如果您在正文中设置其他实例变量,并且您尝试通过将所有分配放在开头可读,则可能需要更多的认知"权力"才能看到分配也发生在参数列表中.但我不认为这比看到一个常量或方法调用并且不得不跳到它的定义更难.
# notice: instance var assignments are happening in 2 places!
def initialize(@name)
@errors = []
end
Run Code Online (Sandbox Code Playgroud) 我有一个活动资源,我查询数据.它返回记录,计数,无论我要求什么.
例如:product = Product.find(123)
响应头应该包含一个自定义属性,比如"HTTP_PRODUCT_COUNT = 20",我想检查响应.
IRB最有效的方法是什么?我没有Rails或其他可能提供底层响应的框架.
我是否需要通过monkeypatched调用或其他方式破解Net :: HTTP或ActiveResource本身?