0

我无法理解路由。另外,我正在尝试了解 routes.rb 中的资源(和资源)关键字。

我创建了 home_controller.rb,并将“资源:home”放在 routes.rb 中。我跑了 rake 路线,我可以看到所有这些东西,但我不知道如何处理它。我只是想显示一个带有表单的页面,比如 index.html.erb,提交表单,在控制器中执行一些操作,然后再次显示完全相同的页面。

我想我想调用一个 PUT "/home" 或其他东西,但我不确定我的 href 在 erb 页面中应该是什么样子。

那么,home_controller.rb 中的什么方法会捕获该提交?

然后,我是否可以重定向回 index.html.erb?

我尽量不使用脚手架或生成器,以便我能理解发生了什么。任何帮助表示赞赏。顺便说一句,导轨 3。

4

3 回答 3

0

这太基本了。请参阅比我们的答案更详细的 Rails 文档。看

  1. http://guides.rubyonrails.org/getting_started.html#rest
  2. http://guides.rubyonrails.org/routing.html
于 2012-05-26T23:58:04.697 回答
0

以下是您入门所需的简要说明:

  1. rails 应用程序中的每个 HTTP 请求都被路由到一个控制器方法。该控制器方法通过呈现某些内容或发出 302 重定向(这会导致浏览器发出不同的请求)来满足请求。

  2. ROR 中的路由描述了每个 HTTP 请求如何映射到每个控制器方法。HTTP 请求基于两个属性进行映射:请求的 urlHTTP 动词GET POST PUT等)。

  3. 当您resources :homesroutes.rb文件中执行此操作时,您是在告诉 Rails 您有一个名为的控制器,HomesController您是在要求 Rails 为该控制器设置其传统的 RESTful 路由。这些如下:

网址GET上的HTTP/homes

  • 映射到index方法
  • 通常用于列出所有的家庭记录

网址GET上的HTTP/homes/1

  • 映射到show方法
  • 通常用于显示家庭记录id = 1

网址GET上的HTTP/homes/new

  • 映射到new方法
  • 通常用于渲染表单以创建新的家庭记录

网址POST上的HTTP/homes

  • 映射到create方法
  • new提交表格的地方
  • 用于创建新的家庭记录
  • 通常以重定向响应

网址GET上的HTTP/homes/1/edit

  • 映射到edit方法
  • 通常用于呈现用于编辑主记录的表单id=1

网址PUT上的HTTP/homes/1

  • 映射到update方法
  • edit提交表格的地方
  • 用于编辑记录id=1
  • 通常以重定向响应

网址DELETE上的HTTP/homes/1

  • 映射到delete方法
  • 通常用于销毁记录id=1
  • 通常以重定向响应
于 2012-05-27T01:04:18.287 回答
0

简而言之,resources 关键字指定您有一个对象(如用户、文章、帖子、评论等),您希望对其执行 Create Read Update 和 Delete 操作。它指定了 7 个操作,称为 RESTful 操作,可让您列出对象(索引)、更新(编辑、更新)、创建(新建、创建)或删除(销毁)。

这对应于控制器中的 7 个操作和 4 个视图文件(创建、更新和删除通常不会有自己的视图)。

rake 路线吐出路线、它们的路径和它们的路径助手。因此,您可以通过以下方式链接到索引操作/页面

<%= link_to 'New Article', new_article_path %>

或其他各种用途,使您不必对可能随您的设计而改变的路径进行硬编码。

听起来,根据您的设计,您不需要所有 7 个动作。您只需要显示一个表单并根据输入的内容创建模型对象。所以你可能会做

resources :home, only => [:new, :create]

您将在哪里显示新表单并在创建时将记录插入数据库。

于 2012-05-27T01:51:09.250 回答