Ruby on rails 入门笔记(三)

一.路由

1.路由的用途

将URL地址分发给控制器进行处理。

2.资源路由

当在编写CURD时我们在路由文件里写入了resources : articles
,当配置了资源路由,就不需要专门声明 index、show、new、edit、create、update 和 destroy 动作。
在 Rails 中,资源路由把 HTTP 方法和 URL 地址映射到控制器动作上。每个控制器动作也会映射到对应的数据库 CRUD 操作上。

HTTP方法路径控制器动作辅助方法
get/articlesindexarticles_path
get/articles/newnewnew_article_path(:id)
get/articles/show:idshowarticle_path(:id)
post/articles/createcreatearticles_path
get/articles:id/editeditedit_article_path
patch/put/articles:idupdatearticle_path(:id)
delete/articles:iddestroyarticle_path(:id)

辅助方法的返回值是其路径。

3.Restful 应用程序

使用Rest概念建立命名路由,用Resource来当做识别的资源,也就是使用一个URL网址来代表一个Resource 。
记忆方式:show、new、edit、update、destroy是单数,对单一元素操作;index、create是复数,对群集操作。
eventpath(@event)需要参数,根据_HTTP动词决定show、update、destroy,是针对一个实例变量
eventspath毋需参数,根据_HTTP动词决定index、create

二.CURD流程

1.从new->create

在new.html.erb文件中<%=form_for :article,url :articles_path do |f|%>articles_path 辅助方法告诉 Rails 把表单指向对应的URI 模式,根据前文的路由,可以理解,服务器发起post请求,指向create动作。

2.create

def create
	#自动映射到对应的数据库
	@article = Article.new(article_params)
	#保存到数据库
	@article.save
	#对应到show动作
	redirect_to @article
	end
	
private
def article_params
	params.require(:article).permit(:title,:text)

通过健壮参数,只提供想要的参数

3.show和index

把参数保存在一个实例变量中,然后把所有实例变量传递给视图

def show
	@article = Article.find(params[:id])
end
def index
	@article = Article.all()
end

5.edit与update

def edit
	@article = Article.find(params[:id])
	end

在edit.html.erb文件中,如果传递给的记录form_for是一种资源,即它对应于一组RESTful路由(例如,使用中的resources方法定义), 则可以进一步简化config/routes.rb。在这种情况下,Rails会简单地从记录本身推断出适当的URL,即转向update动作

`<%= form_for(@article) do |f| %>
def update
	@article = Article.find(params[id])
	if @article.update(article_params)
		redirect_to @article
	else
		render 'edit'
	end
end

6.form_for辅助方法

:article
此种是对象绑定的方式,通过表单,跟Model层的对象绑定,通常完成数据的增,改功能。使用符号:post
@article 实例变量
而在ruby语言中,实例变量也是种对象,即可以理解为
:@article,即可以调用其Article.new Article.find

<%= form_for @article do |f|%>
<%= form_for :article do |f|%>

7.destroy

def destroy
  @article = Article.find(params[:id])
  @article.destroy
 
  redirect_to articles_path
end

此时完成操作后会定向到index动作

三.总结

浏览器发出请求给rails后 首先去访问路由文件,根据路由去控制器寻找相应的动作,动作操作模型中相应的资料,模型从数据库取出资料,最后给view样板。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值