在ruby前面加@但是实例变量,不加的是局部变量,在rails中只有实例变量可以传送到模版文件中。
*.html.erb为html模版中嵌入式ruby的文件,文件中<% %>里可以写ruby的代码。但是这样写其中的代码只会执行不会显示,需要显示出来只要在代码前加上等号,即<%= %>。
我们创建一个模型Post,即在ruby中建立一个Post类,对应数据库中名为posts的一张表。
路由中url后加/:my_param可用于传参数,在控制器中用params[:my_param]即可取得url中输入的参数。其中my_param也可换为其他名字。还有一种传递参数的方法是在提交表单时,发出一个post请求,在执行的控制器中的方法时调用params[:post]可取得提交的表单中的数据。还可以在url中后面加上“?[参数名]=[参数值]”来向服务器传递参数,如baidu.com?param=1。
控制器中redirect_to用于重定向到控制器中的一个方法,即执行该方法的内容并渲染其模版。而render只是渲染模版,而没有执行其控制器中的方法。如果要将当前控制器方法的实例变量传到页面模版就可以使用render。
has_many comments
表示一篇文章可有多个评论
belongs_to article
表示一个评论属于一篇文章
然后在comments表中添加一个article_id字段表示这个评论属于哪一篇文章,然后就开始使用article.comments调用Article类的article对象中的comments方法来获取一篇文章的所有评论。
在建立Comment模型的时候加一个article:references 字段,在调用db:migrate,comments表中就会有一个名为article_id的integer字段。
resources : articles do
resources :comments
end
之后就可以使用两层嵌套的url,如
articles/:articles_id/comments/:comment_id
rails console
进入控制台
然后创建一个连接,如创建一个User模型的连接,则输入
User.connection
然后就可以调用模型中的方法操作数据库。