gpt4 book ai didi

ruby-on-rails - ruby on rails 中的 "_path"方法是什么?

转载 作者:数据小太阳 更新时间:2023-10-29 06:40:30 27 4
gpt4 key购买 nike

我正在学习 RoR,我对 Controller 和路由中使用的“_path”方法感到非常困惑。更具体地说,我指的是采用语法“(something)_path”的许多不同调用。据我所知,它们似乎都对 URL 或链接进行编码或操作。我很难掌握这种方法的使用,因为我无法弄清楚它的核心功能应该是什么。

例如,我可以使用以下代码将旧的 URL 结构重定向到我的 config/routes.rb 文件中列出的 Tweet 实例的页面:

get '/all' => 'tweets#index', as: 'all_tweets'

只有现在我才能在 .erb 文件中使用以下内容。请注意行尾的“_path”代码。

<%= link_to "All Tweets", all_tweets_path %>

我还可以使用以下代码在不同的 .erb 文件中创建指向编辑页面(和另一个操作)的链接:

<p><%= link_to tweet.user.name, edit_tweet_path(@tweet) %></p>

我曾尝试通读我的学习 Material 和 RoR 文档,但我总是比开始时更迷茫。有人知道这个“_path”方法的底层定义吗?

最佳答案

助手

它称为路由助手,这意味着 Rails 将生成它们以帮助为您提供基于资源的路由结构。我稍后会详细解释

--

正确解释 - Rails 只是一个框架。

与所有软件一样,它是按特定顺序加载的一系列文件。因此,Rails 创建了一系列 helper methods在开机过程中。然后可以在整个应用程序中使用这些“帮助器”方法来根据需要调用功能/信息:

The Rails framework provides a large number of helpers for working with assets, dates, forms, numbers and model objects, to name a few. These helpers are available to all templates by default.

In addition to using the standard template helpers provided, creating custom helpers to extract complicated logic or reusable functionality is strongly encouraged. By default, each controller will include all helpers. These helpers are only accessible on the controller through .helpers

route 帮助程序(从您的 config/routes.rb 文件生成)使您能够调用 足智多谋 的路由。这些开始时可能看起来很奇怪,但一旦您理解了它们,就会对您大有裨益。

--

足智多谋

为了让您更清楚 - Rails 路由被称为足智多谋

这意味着它们是围绕资源构建的。为了给你一个简短的定义,你需要明白你的应用程序的资源是你可以添加和提取的数据池来自。

进一步解释,因为 Rails 是 object orientated .如果您是新手,这并不意味着什么,但请记住这一点,因为当您在语言/工作中取得进步时,您将开始明白为什么这很重要。

面向对象编程将对象置于流程的中心。通常,您会将逻辑放在中心,但对于 OOP,它是对象。这对我们来说非常重要,因为这意味着您在 Rails 中所做的一切都基于您可以创建的对象。

根据 MVC principle (这也是 Rails 的基础),您将从 Model 中创建/调用您的对象:

enter image description here

这意味着,如果您想为您的对象创建一系列“CRUD”(创建读取更新销毁)路由,Rails 能够创建执行该操作所需的路由。这是 resources 指令来自路由文件的地方:

enter image description here

希望这对您有所帮助!

关于ruby-on-rails - ruby on rails 中的 "_path"方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25820138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com