updating... ....(笔记中有参照老宋等前辈博客,恕不能意义列举,如有侵犯,烦请告知作者)
1. 自定义站点首页:
I. 先运行命令
|
删除默认到index页面
II. 在routes文件中,添加
Blog::Application.routes.draw
do
#...
# You can have the root of your site routed with "root"
# just remember to delete public/index.html.
root
:to
=>
"XXX#index"
|
此用来告诉路由,你想定位的位置(XXX是你所选择到控制器),注意这里的双引号,如果写成了单引号,就发神谷错误了,原因在前面一篇文章里有分析过。
2. 关于link_to:
LInk_to的作用是超链接到某个地方。
在Rails3.x之前到版本里面,<%=h post.name %> 这段代码里到h是要显式写出来的,作用是忽略文段中出现的HTML标签,而在3.0之后的版本里面,h是默认的,如果你想显式地显示HTML标签,就得加上raw,像这样:
<%= raw post.name %>
3.在创建model的时候(比如order这个model),并没有保存model的id,为什么可以通过order.id访问到一个id呢?
其实,Active Record的默认约定,将orders表的主键为一个integer类型的列。在存入数据库的时候,Active Record自动给新建的对象生成一个唯一的值,并且设置到id属性上,我们可以在save()之后查询id的值:
4.Rails中XXX_url与XXX_path的区别
path是相对路径
url是绝对路径
model为复数的会对应到action=>index, 为单数时需要传递id参数并对应到action=>show
如对于user而言:
users_url # => http://localhost:3000/users
users_path # => /users
user_path(1) # => /users/1
user_url(1) # => http://localhost:3000/users/1
5.rails中的约定
Model用单数因为它表示一个对象如User,
数据库表用复数因为它存放的是对象的集合,
Controller用复数因为它是对对象集合的操作
如果一个请求一个资源时不需要指定ID,就在routes中用单数,如/profile显示当前登录用户的信息,这样你可以使用单数的/profile而不是/profile/:id。
也可以用match “profile” => “users#show”
Controller中可以用变量request,然后可以得到session, request_info, head, method等请求信息
6.关于Rake的几个操作
1).rake db:migrate迁移数据库
2).rake db:seed 将放在seed里面的内容
创建方式为:#encoding utf-8(这里一定要用#注释掉,而且要放在最开始部分)
Post.delete_all
Post.create(
:title => "test"
:content => "test"
)
这里的seed如果迁移两边的话,之前posts表的id键将会重新创建,即就是说,更新seed,那么就会更新跟seed有关的表,且表的id会更新
3).rake db:rollback回滚操作。可以持续回滚,指导表格全部被drop掉.重新migrate将重新迁移数据库。
7. 在命令行中进行数据库操作
运行:sqlite3 db/development_sqlite3 "select id from posts"
8.Rails中的井号#
两种用法:
一,#表示调用实例方法,与之对应的是dot(点号)表示调用类方法
.与#使用惯例:在阅读书时经常会遇到User.all, users#show这样的表示,其中的点.与井号#使用也是有约定的,点.用于调用类方法,井号#用于调用实例方法。
二,内嵌表达式
在由双引号包围的字符串以及正规表达式中可以使用「#{表达式}」" ,可以将表达式的内容,以字符串的形式嵌入其中。若该表达式是带有 $ 或 变量名称@ 记号的,则可以省去大括号 {},也就是「#变量名称」的格式。井号(#)的后面若不是 {、$、@,则是表示井号本身。若是不使用内嵌表达式,在井号的前面加上反斜杠(\)。
$ruby = "RUBY" p "my name is #{$ruby}" # => "my name is RUBY" p 'my name is #{$ruby}' # => "my name is #{$ruby}" p "我叫做 #{$ruby}" # => "我叫做 RUBY" p '我叫做 #{$ruby}' # => "我叫做 #{$ruby}"
9.link_to方法小结
项目中要链接到一个不同controller的不同action中,link_to可以很方便的解决这个问题:
<%= link_to product.title { :controller => "products", :action => "show", :id => product} %>