Ruby on rails 如何在RubyonRails中更改路由?

Ruby on rails 如何在RubyonRails中更改路由?,ruby-on-rails,routes,scaffold,Ruby On Rails,Routes,Scaffold,我刚刚安装了RubyonRails并创建了一个名为posts的脚手架。RoR为我生成了控制器和其他必需的文件 我在posts\u controller中创建了一个新方法,但无法访问它。我查看了控制器中的其他方法,似乎需要通过/posts/[MY POST ID]/[MY METHOD NAME]访问它们 假设我在控制器中创建了自定义方法hello,我如何访问它 我查看了routes.rb,但没有针对它的配置 更新: 我知道我可以在routes.rb中手动配置它,但是所有其他方法是如何工作的?例如

我刚刚安装了RubyonRails并创建了一个名为
posts
的脚手架。RoR为我生成了控制器和其他必需的文件

我在
posts\u controller
中创建了一个新方法,但无法访问它。我查看了控制器中的其他方法,似乎需要通过
/posts/[MY POST ID]/[MY METHOD NAME]
访问它们

假设我在控制器中创建了自定义方法
hello
,我如何访问它

我查看了
routes.rb
,但没有针对它的配置

更新:

我知道我可以在
routes.rb
中手动配置它,但是所有其他方法是如何工作的?例如,我在“
posts\u controller.rb
”控制器中有“
edit
”和“
update
”方法。在不配置路由的情况下,这两种方法如何工作

  # GET /posts/1/edit
  def edit
    @post = Post.find(params[:id])
  end
我在Rails 3.x中找不到与
/posts/[0-9]/edit
模式匹配的配置。

匹配“posts/hello”=>“posts#hello”


可在example.com/posts/hello

上获得,这将使您在路线上有一个良好的开端:

并不是每个方法都有自己的路径,rails是基于rest原则构建的,并且您的脚手架在post controller中创建了遵循这些路径的方法,如index、show等


您可以强制您的方法添加路由,但实际上您几乎不需要这样做,因为遵循约定要容易得多。

您要查找的文档是。阅读完本文后,您将了解Rails接受您的请求并将其指向控制器中的方法所做的一切。

您需要将其路由添加到
routes.rb
。例如:

# Previous routes
# resources :posts

# Updated routes
resources :posts do
  get "hello", :on => :member
end

看看这个,它应该可以帮助您理解Rails路由。

当您使用scaffold生成post时,它在
routes.rb
文件中添加了一行
参考资料:posts
。该行为生成的所有控制器操作配置路由。正如Caleb在上面提到的,并不是每个动作都有一条专用的路径。一条路径可以对应多个操作,因为rails还考虑了HTTP方法。因此,例如,使用HTTP方法GET的路径
/posts
对应于控制器操作
索引
,而使用HTTP方法PUT的相同路径对应于控制器操作
更新
。当您从控制台运行
rake routes
时,可以看到这些关联。我同意Jordan和Caleb的观点,铁路指南是一本很好的读物,可以帮助您了解路线。

//谢谢您的回答!。ROR是如何通过阅读一行代码(参考资料:posts)来配置路由的?我还没有查看源代码来了解Rails是如何做到的,但是当您使用“参考资料”时,Rails设置了7条路由。查看上述指南的第2.2节:我从未找到比这一节更好的关于路线基础的解释: