【问题标题】:Rails 3.2.1 - How and when RESTful routes helpers like photos_path, new_photo_path, edit_photo_path are createdRails 3.2.1 - 如何以及何时创建 RESTful 路由助手,如 photos_path、new_photo_path、edit_photo_path
【发布时间】:2012-02-22 14:53:31
【问题描述】:

我是学习 Ruby 和 Rails 的初学者。

我正在阅读 Rails 3.2.1 指南的以下部分:

http://guides.rubyonrails.org/routing.html#paths-and-urls

上面写着:

Creating a resourceful route will also expose a number of helpers to the controllers   
in    your application. In the case of resources :photos:

photos_path returns /photos
new_photo_path returns /photos/new
edit_photo_path(:id) returns /photos/:id/edit (for instance, edit_photo_path(10) returns /photos/10/edit)
photo_path(:id) returns /photos/:id (for instance, photo_path(10) returns /photos/10)

我很想知道这些助手是如何以及何时在请求的生命周期中创建的,即 new_photo_path、edit_photo_path 等,以及在源代码中我可以在哪里找到执行相同操作的代码。

我正在浏览以下文件 /gems/actionpack-3.2.1/lib/action_dispatch/routing/mapper.rb 中的代码,我猜这个文件中的代码正在创建上面帮手。如果我错了,请纠正我。

谢谢,
吉格尼什

【问题讨论】:

    标签: ruby-on-rails-3 routes


    【解决方案1】:

    基本上,是的,这是正确的。有关更多信息,您应该查看 Ryan Bates 去年 9 月所做的Routing Walkthrough series,他在其中介绍了一些控制路由的 Rails 代码。

    【讨论】:

    • 感谢 Brandon 提供参考。一定会完成演练。 - Jignesh
    【解决方案2】:

    如果您使用生成器(例如 rails g controller NewController),助手会自动创建并放置在具有类似命名法的 ./app/helpers 中。如果您是手动制作控制器,那么您需要创建自己的控制器,例如新帮手。默认情况下,尽管所有控制器都加载 application_helper.rb。

    如果您不打算在多个控制器/视图中使用辅助方法,最好将其放在自己的辅助文件中。这个guide 可能有助于解释更多。

    更新 辅助方法由您根据需要编写。辅助生成器的代码可以在here找到

    【讨论】:

    • 我使用脚手架生成了我的第一个示例 Rails 应用程序。我可以为我的用户模型找到一个 users_helper.rb,其中包含一个空模块 UsersHelper,但它是空的。我找不到任何帮助方法,例如new_user_path,edit_user_path 正如我在第一篇文章中提到的那样。此外,我有兴趣查看生成此类帮助程序的代码。但是,感谢您的回复和您提供的链接。我一定会完成的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    • 2011-09-16
    • 2013-05-09
    • 1970-01-01
    相关资源
    最近更新 更多