ele*_*ong 12 ruby ruby-on-rails ruby-on-rails-3
我正在学习RoR,并且我对"_path"方法感到非常困惑,因为它在控制器和路由中使用.更具体地说,我指的是采用语法"(something)_path"的许多不同调用.据我所知,他们似乎都编码或操纵URL或链接.我很难掌握这种方法的使用,因为我无法弄清楚它的核心功能应该是什么.
例如,我可以使用以下代码将旧的URL结构重定向到我的config/routes.rb文件中列出的Tweet实例的页面:
get '/all' => 'tweets#index', as: 'all_tweets'
Run Code Online (Sandbox Code Playgroud)
只有现在才能在.erb文件中使用以下内容.注意行末尾的"_path"代码.
<%= link_to "All Tweets", all_tweets_path %>
Run Code Online (Sandbox Code Playgroud)
我还可以使用以下代码在不同的.erb文件中创建指向编辑页面(和另一个操作)的链接:
<p><%= link_to tweet.user.name, edit_tweet_path(@tweet) %></p>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过阅读我的学习资料以及RoR文档,但我总是比起初时更加迷失.有人知道这个"_path"方法的低级定义吗?
Ric*_*eck 17
帮手
它被称为a route helper
,这意味着Rails将生成它们以帮助为您提供基于资源的路由结构.我会在一秒钟内解释更多
-
要正确解释--Rails只是一个框架.
与所有软件一样,它是按特定顺序加载的一系列文件.因此,Rails 在启动过程中创建了一系列辅助方法.然后,可以在整个应用程序中使用这些"帮助程序"方法来根据需要调用功能/信息:
Rails框架提供了大量的帮助程序,用于处理资产,日期,表单,数字和模型对象,仅举几例.默认情况下,这些帮助程序可用于所有模板.
除了使用提供的标准模板助手之外,强烈建议创建自定义助手以提取复杂的逻辑或可重用的功能.默认情况下,每个控制器都包含所有帮助程序.这些助手只能通过.helpers在控制器上访问
route
帮助程序(从您的config/routes.rb
文件生成的帮助程序使您能够调用足智多谋的路由.这些可能看起来很奇怪,但一旦您了解它们,将无情地帮助您.
-
足智多谋
为了让您更清晰 - Rails路由被称为足智多谋
这意味着它们是围绕资源构建的.为了简要说明这一点,您需要了解应用程序的资源是您可以添加到的数据池,以及从中获取的数据.
进一步解释,因为Rails是面向对象的.如果你是新手,这并不是很重要,但要记住,因为当你进入语言/工作时,你会开始明白为什么这很重要.
面向对象的编程将OBJECTS置于流的中心.通常,您将逻辑置于中心,但使用OOP,它就是对象.这对我们来说非常重要,因为这意味着您在Rails中所做的一切都是基于您可以创建的对象.
根据MVC原则(同样是Rails的基础),你将从你的Model
s 创建/调用你的对象:
这意味着如果要创建一系列到"CRUD"(创建读取更新销毁)对象的路由,Rails就能够创建执行此操作所需的路由.这是resources
指令来自routes文件中的位置:
希望这可以帮助!
The*_*Log 11
实际上,这些路径是根据您的routes.rb
.如果您在项目中运行此命令,则可以在应用程序上看到所有可用的命令
rake routes
Run Code Online (Sandbox Code Playgroud)
例如,如果我routes.rb
像这样声明我的资源
resources :posts
Run Code Online (Sandbox Code Playgroud)
然后我会自动拥有以下可用路径
posts_path
post_path
new_post_path
edit_post_path
Run Code Online (Sandbox Code Playgroud)
如果你使用一些abc_path
尚未声明的奇怪的东西routes.rb
,那么你会得到错误.
希望这是有帮助的,你肯定需要使用Rails更多地工作,然后最终你会理解所有这些东西:)