rails学习笔记Updating...

阅读更多

updating... ....(笔记中有参照老宋等前辈博客,恕不能意义列举,如有侵犯,烦请告知作者)

 

1. 自定义站点首页:

I. 先运行命令

 

$ rm public/index.html

删除默认到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} %>

你可能感兴趣的:(RoR)