使用资源的简单rails路由

时间:2012-05-26 23:54:35

标签: ruby-on-rails routing

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

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

我想我想调用一个PUT“/ home”,或者其他东西,但我不确定我的href应该在erb页面中看起来像什么。

然后,home_controller.rb中的哪个方法会捕获该提交?

然后,我可能会重定向回index.html.erb吗?

我正在尝试不使用脚手架或发电机,这样我才能理解发生了什么。任何帮助赞赏。顺便说一下,铁轨3。

3 个答案:

答案 0 :(得分:0)

它太基本了。请参考rails doc,它比我们的答案更详细。见

  1. http://guides.rubyonrails.org/getting_started.html#rest
  2. http://guides.rubyonrails.org/routing.html

答案 1 :(得分:0)

以下是您开始使用所需内容的快速说明:

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

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

  3. 当您在resources :homes文件中routes.rb告诉Rails您有一个名为HomesController的控制器时,您要求Rails为该控制器设置其传统的RESTful路由。具体如下:

  4. 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
    • 销毁记录
    • 通常以重定向
    • 进行回复

答案 2 :(得分:0)

简单地说,resources关键字指定您有一个对象(如用户,文章,帖子,评论等),您希望在其上创建“读取更新”和“删除”操作。它指定了7个操作,称为RESTful操作,允许您列出对象(索引),更新(编辑,更新),创建(新建,创建)或删除(销毁)。

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

rake路线吐出路线,路径和路径助手。因此,您可以通过

链接到索引操作/页面
<%= link_to 'New Article', new_article_path %>

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

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

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

在新的位置显示表单并在创建时将记录插入数据库。