怎么在这里使用`get`?

时间:2015-02-19 21:43:08

标签: ruby-on-rails ruby get routes

我正试图从Codecademy的网站上了解这段代码:

Rails.application.routes.draw do
  get '/' => 'pages#home'

  resources :categories
  get 'categories/:id/delete' => 'categories#delete', :as => :categories_delete
end

这是routes.rb文件,代码首先指定它的对象是Rails应用程序,然后它背靠背调用三个方法!即applicationroutesdraw。我将这些解释为方法因为句点语法,但只是将声音描绘成方法。

然后它使用get指定应用程序的根,即应用程序打开时,应该路由到主页。我不确定为什么这个字符串的行为是pages#home

然后,我们调用resources作为路线创建者。我们用符号:categories指定路线。

我们得到符号categories_delete指向的内容。然而,这个其他语法是什么意思?

get 'categories/:id/delete' => 'categories#delete', :as => . . .

4 个答案:

答案 0 :(得分:0)

红宝石世界中常见的命名法(它可能来自其他语言,我不知道)是将实例方法编写为ClassName#instance_method_name,这个简写已被借用于Rails路由方法,除了使用完整的类名(可能是CategoriesController)之外,他们只使用控制器的低位名称,而不使用“Controller”后缀。

因此,pages#home表示home类中的PagesController方法。

最终的get方法形式不好,它正在创建一条路线,允许删除带有简单GET请求的记录到/categories/123/delete,其中123将通过到CategoriesController作为params[:id]

您可以在the excellent Rails Routing Guide找到更多关于这一切是如何运作的。

答案 1 :(得分:0)

每篇文章as in rails routes

所有这一切都是创建一个url帮助器,以便:

get 'categories/:id/delete' => 'categories#delete', :as => :category_delete

生成2个方法

category_delete_path
category_delete_url

两者之间的唯一区别是url还附加了主机和端口。


很抱歉编辑,完全搞砸了该网址的链接

答案 2 :(得分:0)

get - 是一个HTTP Verb,可以说是HTTP方法,具体取决于您执行的操作 当创建动作时它将被发布,在更新时它将被放置

:as option允许您覆盖指定路径助手的正常命名 所以categories#index你可以说是categories_path categories#deletecategories_delete

categories/:id/delete这会调用类别控制器,删除就是操作,并且id可以作为params[:id]在控制器中以{id}来记录{/ 1}}记录

答案 3 :(得分:0)

只是为其他人已经发布的答案添加几点。

  

它背靠背调用三种方法!即applicationroutesdraw。我将这些解释为方法,因为句点语法,但只绘制声音像方法

这是正确的,这些是链中的3个方法,每个方法都调用从前一个方法返回的值。 Ruby中通常有一种约定,即保持方法名称非常简洁,例如Rails.application将您的应用程序对象优先于Rails.get_application

返回
  

我们正在“获取”category_delete指向的任何符号。然而,这个其他语法到底意味着什么?

     

get 'categories/:id/delete'

get方法未获取值,它为使用HTTP GET方法的请求定义路由。这里发生的是内部域特定语言用于定义路由。即,Ruby代码用于定义路由,但支持它的方法的命名方式使其成为用于定义路由的配置语言。

e.g。 get 'categories/:id/delete' => 'categories#delete'代替类似的方法 define_route(http_method, path, action)