Ruby的立场是什么是edit_post_path

时间:2011-09-24 03:42:35

标签: ruby-on-rails ruby ruby-on-rails-3

学习Ruby和Rails。如果我调用

,请遵循入门指南
rails generate scaffold Post name:string title:string content:text

它会生成index.html.erb中的以下代码:

<% @posts.each do |post| %>
  <tr>
    <td><%= post.name %></td>
    <td><%= post.title %></td>
    <td><%= post.content %></td>
    <td><%= link_to 'Show', post %></td>
    <td><%= link_to 'Edit', edit_post_path(post) %></td>
    <td><%= link_to 'Destroy', post, confirm: 'Are you sure?', method: :delete %></td>
  </tr>
<% end %>
</table>

我在上面唯一关注的是edit_post_path,我的问题是,它是什么 - 特别是从Ruby角度来看 。它当然具有Ruby方法的每一种外观,并且它嵌入在其他代码中,这绝对是Ruby:posts.each do |post|...end这就是所有Ruby

但是如果edit_post_path是Ruby方法,那么它的代码在哪里? 'post'是我提供给Rails的标签,因此可能这个Ruby方法应该在我的站点目录中的某个位置以及在上面调用“rails generate scaffold ...”时生成的其他Ruby代码(即它不会在特定于Rails的目录)。但是在任何地方都没有定义'edit_post_path'这样的方法。所以它根本不是真正的Ruby,只是出于某种原因而设计成这样的东西,而且实际上只是一串由Rails严格专有的文本处理的文本。这是一个关于Rails如此酷的例子吗?

2 个答案:

答案 0 :(得分:3)

这是一个Rails助手方法 - 詹姆斯指出的sugar语法 - 用于在你的应用程序中进行路由。

要查看可用的所有路由,请在命令行执行rake routes。您将在左侧看到帮助程序列表,然后您将在第二列中看到HTTP操作,第三列= URL路径格式,最后一列是控制器及其相关操作的细分。

要查看一些位于此magic核心的Ruby代码,请在Rails 3 repo中查看,如下所示:https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/mapper.rb#L444

此外,如果您要为特定资源创建自定义网址,请查看:https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/url_for.rb

以下是有关路由的更多信息:http://guides.rubyonrails.org/routing.html

希望有所帮助。

答案 1 :(得分:2)

这是Rails中内置的“糖”-syntax。这样有很多简单的方法可以加速开发。