代码之家  ›  专栏  ›  技术社区  ›  Thierry Lam

如何检查Rails中模型资源的URL帮助程序?

  •  0
  • Thierry Lam  · 技术社区  · 15 年前

    我目前正在学习SimpleRails2这本书中的Snowll教程。在第168页,它提到 URL Helpers for the Story Resource :

    stories_path                 /stories
    new_story_path               /stories/new
    story_path(@story)           /stories/1
    edit_story_path(@story)      /stories/1/edit
    

    然后在控制器中使用上述内容:

    def create
      @story = Story.new(params[:story])
      @story.save
      redirect_to stories_path
    end
    

    我的 routes.rb :

    ActionController::Routing::Routes.draw do |map|
      map.resources :stories
      map.connect ':controller/:action/:id'
      map.connect ':controller/:action/:id.:format'
    end
    

    看起来像 stories_path 是的URL名称 /stories . 这是在我的应用程序中的某个地方明确定义的,我似乎不能为那个关键字grep。如果没有,我是否可以从Rails控制台或其他地方检查上面的映射?在django中,通常在 urls.py 我只是不知道上面是怎么产生的。任何文档和指针都会有所帮助。

    2 回复  |  直到 15 年前
        1
  •  0
  •   Alessandra Pereyra    15 年前

    我想看看 Rails Guides on Routing 会帮助你了解发生了什么事

    简而言之,通过使用

    map.resources :stories
    

    路由器将自动生成一些有用的(和静止的)路由。它们的路径将采用模型名(请记住,在Rails中有一个关于配置的约定座右铭),并且在默认情况下,将为所有其余操作生成路由。

    此路由可通过控制器、视图等访问。

    如果要检查从映射生成的路由,可以使用“rake routes”命令。

    现在,考虑到这一点,您还可以在routes.rb文件中为不完全符合REST范式的操作或事件编写显式的URL。

    为此,您可以使用

    map.connect "/some_kind_of_address", :controller => :pages, :action => "something_else"
    

    map.home "/home", :controller => :pages, :action => "home"
    

    最后一个路径将提供给您可以在代码中使用的主路径和主URL路径。

        2
  •  1
  •   Mark Connell    15 年前

    要获取映射的路由列表,请执行以下操作:

    rake routes
    

    map.resources:stories正在做的是将您的RESTful操作(index、show、edit等)从stories_controller.rb映射到命名的路由,然后您可以使用这些路由进行简化。

    routes.rb包含了定义自定义路由的有用提示,可能值得花点时间查看API中的资源以更好地理解: http://api.rubyonrails.org/classes/ActionController/Resources.html#M000522