Rails 的新手,所以如果在某个地方讨论过这个问题,请把我联系起来:我进行了很好的搜索,但我能找到的只是人们试图弄清楚如何使用 link_to,而不是对此评论的任何讨论:
link_to "Profile", profile_path(@profile)
# => <a href="/profiles/1">Profile</a>
in place of the older more verbose, non-resource-oriented
link_to "Profile", :controller => "profiles", :action => "show", :id => @profile
# => <a href="/profiles/show/1">Profile</a>
http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to
我知道后者更冗长,因此不受欢迎,但推荐前者似乎是一件奇怪的事情。
如果我有一个动作说:/blah/add,我使用以下链接链接到它:
link_to "Link", link_add_path
然后我链接到 mysite.com/link/add。这是一个硬编码的 url。
如果我更改此映射到的路由,我必须更改我的代码库中的每个 link_to 实例以指向新的绝对 url。这似乎很疯狂。
但是,如果我使用以下方法链接到它:
link_to "Link", :controller => "thing", :action => "add"
然后动态确定url。如果我必须更改路径,我所做的就是编辑 config/routes.rb 并且不触及我的任何代码。这似乎是低得多的维护。
我很欣赏它比这稍微复杂一些,blah_path 变量实际上不是静态路由,实际上包含一些智能,例如应用程序基本 url,并阻止您链接到不存在的 url,但这似乎是倒退一步促进稍微不那么冗长的语法。
那么,这是怎么回事?
您会出于什么技术原因选择前者而不是后者的 link_to 语法?