3.2 不支持 rjs 模板,建议退回 3.0.5 学习。看完书再看 changelog 跟上版本。
lower() 是数据库内的函数。
你看的书版本对应多少?
在 ready function 里面加几行日志看看
console.log('hit');
console.log($('.search input'));
console.log($('.search #search-trigger'));
然后到控制台看输出
PS:没必要 require min 啊,这样调试都不好调试了,生产环境编译的时候会压缩的。
别这样做,有安全漏洞。比如,一个写操作如果可以用 get 访问,就可以把这个操作地址作为 img 的 src 发出去,有权限者一访问就中招。
#3 楼 @yangchenyun 不用自我审查
return
关键的萌妹子呢?
企业版很贵么?
http://learn.shayhowe.com/ 我收藏了还没看
软广告
还没用 gem 安装 mongo?
gem install mongo
~/.rvm$ rake db:migrate
不是太年轻,就是太老,就是找不到合适的时间。 —— 《rework》
username 和 usermail 做好校验,非空,username 不能含有 @,email 一定要含有 @,防止两个字段冲突。
找更成熟的前端插件。
自从发现 counter_cache 的行为有时不符合我理解之后,我就自己写 after_create 了。
更正一下
rb_obj_as_string(rb_inspect(obj)) // 没看到中间先调用了 rb_inspect
所以 p Obj 和 p Obj.inspect 区别是相当于输出 Obj.inspect 和 Obj.inspect.inspect 的区别。
有刨根问底的精神就动手看源码的同学。
void
rb_p(VALUE obj) /* for debug print within C code */
{
VALUE str = rb_obj_as_string(rb_inspect(obj)); // 将对象转换为字符串
if (TYPE(rb_stdout) == T_FILE &&
rb_method_basic_definition_p(CLASS_OF(rb_stdout), id_write)) {
io_write(rb_stdout, str, 1);
io_write(rb_stdout, rb_default_rs, 0);
}
else {
rb_io_write(rb_stdout, str);
rb_io_write(rb_stdout, rb_default_rs);
}
}
VALUE
rb_obj_as_string(VALUE obj)
{
VALUE str;
if (TYPE(obj) == T_STRING) { // 如果已经是字符串就直接返回
return obj;
}
str = rb_funcall(obj, id_to_s, 0);
if (TYPE(str) != T_STRING)
return rb_any_to_s(obj);
if (OBJ_TAINTED(obj)) OBJ_TAINT(str);
return str;
}
p Obj 和 p Obj.inspect 区别是前面如果不是 String,就会调用 to_s 后输出,后面已经是 String 了,就直接输出
http://apidock.com/ruby/Kernel/p 下面还有源码,更多就是翻 ruby 源码了。
#6 楼 @zhouhong_135 git 里面 commit 就代表一个时间点。
假设有个 commit 的 hash 是 d2d44b6
取出该 commit 的所有代码(放到新分支 backup)
git checkout -b backup d2d44b6
取出该 commit 的 Gemfile 文件,放到当前分支
git checkout d2d44b6 Gemfile
回滚到该 commit,放弃该 commit 之后的所有修改
git reset --hard d2d44b6
如果你给这个 commit 加上 tag 命名,就把 tag name 替换到前面 hash 的位置。
tag 指向 commit,commit 指向 index,index 指向这个 commit 点的所有文件。所以 tag 可以指代这个 commit 点的所有代码。
或者我没理解楼主的意思,给代码打标记是来源哪个工具的概念?