`
mypages
  • 浏览: 90343 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

应用Rails进行REST 开发(四)

阅读更多

Controller 里的URL 方法

在View中,我们已经使用了一些新的helper 方法(也就是path方法)来生成了REST风格的URL,那么controller 自然也需要一些新的东西来处理redirect 等请求。在controller中,我们使用“url”helper 方法,来生成正确的REST风格的URL。


project_url 对应 project_path
projects_url 对应 projects_path


和 “path” 方法向对比,“url” 方法生成了一个完整的URL地址,包括协议,主机,端口,以及路径。
project_url(1)
=>
"http://localhost:3000/projects/1 "
projects_url
=>
"http://localhost:3000/projects "


在Rails 应用的controller里,”url” 方法用在redirect_to 方法里,取代传统的 controller/action 的方式。
redirect_to :controller => "projects", :action => "show",:id => @project.id


在REST应用中应该这么写:


redirect_to project_url(@project)


对于这一点,你可以把 destroy action 作为一个例子去看看:在一个资源被删除以后,使用 project_url 去显示全部的资源,而不是像以往一样使用controller,action 作为参数。


Listing 1.3: ontrack/app/controllers/projects controller.rb
def destroy
@project = Project.find(params[:id])
@project.destroy
respond_to do |format|
format.html { redirect_to projects_url }
format.xml { head :ok }
end
end

REST 风格的路由

到目前为止,我们介绍了REST的内容,以及在 链接,form,controller中所适用的一些新的helper方法。但是我们没有解释那些helper方法是从哪来的?决定那些方法存在的,以及 指定那些方法会调用哪个controller的哪个action,就是一个文件,那就是 /config/routes.rb。


map.resources :projects


这个配置是由我们上面适用 scaffold 生成器生成的。生成器生成了一个路由,当处理请求时,controller 需要这个路由才能知道调用哪个action。此外,resources 生成了path 和 url 的helper方法去操作“project”这个资源。

projects projects_url, projects_path
project project_url(id), project_path(id)
new_project new_project_url, new_project_path
edit_project edit_project_url(id), edit_project_path(id)

习惯

要进行REST风格的开发,就必须遵循REST方式的命名习惯,多针对 CRUD四个操作而言。下面的link_to 将会产生如下的html:


link_to "Show", project_path(project)
=>
<a href="/projects/1">Show</a>


不管是link_to 方法中,还是生成的html中,都没有去指定要调用的action,Rails 会知道,如果使用Get方式来调用这个URL,那么就是去调用show这个action。因此,controller里就必须有一个名字为“show”的 action。对于index, update, delete,create, destroy,new,edit,也都是相同的习惯,所以,每一个REST的controller 都必须实现这几个方法。

定制路由

定制路由
通过以下一些选项,REST的路由可以去适应应用的一些特殊需求:


:controller. 指定使用哪一个controller
:path prefix. 生成的URL的前缀。
:name prefix. Helper方法的前缀。包括 url方法和path方法。
:singular. 对于一个路由,命名一个唯一的名字。


下面的例子创建了一个路由,用于新建一个Sprint资源,sprint的信息我们会在下面的章节中介绍。


map.resources :sprints,
:controller => "ontrack",
:path_prefix => "/ontrack/:project_id",
:name_prefix => "ontrack_"


在这个URL中,我们适用了 :path_prefix,意味着每一个URL都必须以/ontrack/+project id 开始,对应的controller 应该是 OntrackController。因此这个URL http://localhost:3000/ontrack/1/sprints 根据路由的规
则,会调用 OntrackController的index 方法,而这个URL“http://localhost:3000/ontrack/1/sprints/1
”则会调用 show 方法。:path_prefix 定制了URL的格式,那么 :name_prefix 则会修改helper的方法的名字:


ontrack_sprints_path(1)
=>
/ontrack/1/sprints
or
ontrack_edit_sprint_path(1, 1)
=>
/ontrack/1/sprints/1/edit

 

好了,今天就说到这,下章我们来说说嵌套资源的REST风格。

分享到:
评论

相关推荐

    应用Rails进行REST开发

    ### 应用Rails进行REST开发 #### 1.1 什么是REST? REST(Representational State Transfer),这是一种由Roy Fielding在他的博士论文中提出的架构风格。REST的核心思想是通过标准HTTP协议中的GET、POST、PUT、...

    Web开发敏捷之道-应用Rails进行敏捷Web开发(第3版).pdf

    《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》:Ruby on Rails是一个全套的MVC web框架,它能帮你开发高质量又美观的web应用,而且开发速度快得出乎你想象。你只须集中精力于应用程序本身,Rails就会帮你...

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...

    应用Rails进行敏捷Web开发

    ### 应用Rails进行敏捷Web开发:探索框架的精髓与敏捷的魅力 Rails,全称Ruby on Rails,是由David Heinemeier Hansson创建的一种基于Ruby语言的开源Web开发框架。自诞生以来,Rails以其独特的魅力迅速席卷了Web...

    应用Rails进行敏捷Web开发 第三版(doc格式)

    《应用Rails进行敏捷Web开发 第三版》是关于Ruby on Rails框架的一本经典教程,针对的是Web开发领域的专业人士。Rails是一种流行的开源Web应用程序框架,它基于Ruby编程语言,旨在简化和加速Web应用的开发过程,强调...

    使用rails编写REST风格的web应用

    Rails,全称Ruby on Rails,是一款基于Ruby语言的开源Web应用程序框架,遵循MVC(Model-View-Controller)架构模式,特别适合快速开发RESTful(Representational State Transfer,表述性状态转移)风格的Web应用。...

    应用Rails进行敏捷Web开发(第2版)

    《应用Rails进行敏捷Web开发(第2版)》是一本深度探讨如何利用Ruby on Rails框架进行高效、敏捷的Web应用程序开发的专业书籍。Rails是Ruby语言的一个开源Web开发框架,它倡导DRY(Don't Repeat Yourself)原则,强调...

    使用rails编写REST风格的web应用.pdf

    标题与描述均指向了"使用Rails编写REST风格的Web应用"这一主题,这是一份深入探讨如何运用Ruby on Rails框架来构建遵循REST(Representational State Transfer)架构风格的Web应用程序的指南。REST作为一种架构风格...

    Web开发敏捷之道-应用Rails进行敏捷Web开发-第三版.rar

    相比第2版中的内容,Rails 2增加了REST、资源、轻量级web service等新特性。本书涵盖了这些全新的内容,因此能更好地体现出Rails框架的发展现状。 整体而言,全书既有直观的实例,又有深入的分析,同时还涵盖了web...

    跨越边界:REST on Rails

    随着Ruby的经验不断成功,开发人员开始寻求把他们的Ruby应用程序与用其他语言编写的应用程序集成。Rails对Web服务提供了优秀的支持。本文介绍Rails中的Web服务,重点放在一个名为Representational State Transfer ...

    Rails101_by_rails4.0

    Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它遵循模型-视图-控制器(MVC)的架构模式,设计用来快速开发数据库驱动的动态网页。随着Rails版本的更新迭代,此书聚焦于一个特定的版本,帮助...

    The Rails 4 Way

    - **启动和应用设置**:这部分介绍如何配置Rails项目的启动过程以及如何设置各种环境变量,包括开发、测试和生产环境的差异配置。 - **不同模式下的配置**: - **开发模式**:通常包含更多的调试信息和详细的错误...

    rails本地安装包完整版

    它允许Rails应用作为客户端,通过HTTP与遵循REST原则的远程资源进行交互,从而实现数据的获取和更新。 5. **rake-0.8.1.gem**:Rake是Ruby社区广泛使用的构建工具,类似于Java的Ant或Python的setup.py。它允许...

    好用的rails 2.0 Api 文档

    Rails鼓励使用REST(Representational State Transfer)架构风格来构建Web应用。RESTful路由允许开发者通过HTTP动词(GET、POST、PUT、DELETE等)来定义资源的操作,使URL更加语义化,提高可读性和可维护性。 **4. ...

    Rails的精简版本Rails::API.zip

    Rails::API 是 Rails 的精简版本,针对不需要使用完整...也可以用来编写在 Web 应用和客户端之间进行数据共享的后端程序,允许开发者创建接受 JSON 格式数据并以传统 RoR 应用方式存储的REST端点。 标签:rails

    rails-1.0.0

    Rails是一个基于Ruby编程语言的开源Web应用程序框架,遵循MVC(Model-View-Controller)架构模式,致力于实现“约定优于配置”(Convention over Configuration, CoC)和“Don't Repeat Yourself”(DRY)的原则,极...

Global site tag (gtag.js) - Google Analytics