我正在尝试在我的导航栏中使用link_to方法,但我明显缺乏了解其实际工作原理的基础知识。Ruby on Rails link_to方法
<% link_to "Viral", @viral %>
我的印象是“病毒”是链接的标签,但我不知道什么是病毒。该路线是否与控制器/视图链接(即病毒控制器&视图),如果是,那么路线将是什么样子?我正在试图为不同的文章创建分类页面,并认为这将是最明显的导航方式。
我正在尝试在我的导航栏中使用link_to方法,但我明显缺乏了解其实际工作原理的基础知识。Ruby on Rails link_to方法
<% link_to "Viral", @viral %>
我的印象是“病毒”是链接的标签,但我不知道什么是病毒。该路线是否与控制器/视图链接(即病毒控制器&视图),如果是,那么路线将是什么样子?我正在试图为不同的文章创建分类页面,并认为这将是最明显的导航方式。
@viral是简单的路径。
如果您已经定义像这样的路线:
get "viral", as: "something#viral" => "viral"
,那么你应该把<%= link_to "some text", viral_path %>
和链接会自动定向到www.domain.com/viral。
如果你有一个特定的网址,你应该在引号后面写域名。所以,如果您的域名是www.domain.com,你想重定向到www.domain.com/viral,你会写
<%= link_to "some text", "viral" %>
@viral
是一个变量(对象)
link_to
是一个辅助方法什么使HTML链接
<%= link_to "Viral", @viral %>
将建立链接显示的动作,但如果您需要设置其他路径只需使用:
<% link_to "Viral", viral_path %>
条
您可以在终端
rake routes
你link_to
需要有以下传递给它:
<%= link_to "Link Text", "http://link-path.com" %>
第一个参数是锚文本,第二是浏览器将请求的URL。
由于Rails是一个应用框架,你可以通过动态值到link_to
参数。就像是...
#app/helpers/application_helper.rb
def your_link_helper
"http://google.com"
end
<%= link_to "Link Text", your_link_method %>
如果你明白这一点,你就会明白,Rails sets a series of "helper" methods for your "routes",这意味着,而不是(以上)your_link_method
,你就可以使用...
#config/routes.rb
resources :virals
<%= link_to "Viral", viral_path("12") %>
-
所以...
@viral
是一个instance variable - 在类的实例(在这种情况下,您的控制器)设置的变量:
#app/controllers/virals_controller.rb
class ViralsController < ApplicationController
def show
@viral = Viral.find params[:id]
end
end
由于Ruby是object orientated,它期望每个@instance_variable
是由红宝石分配一个对象。
这意味着,如果你通过一个有效的Ruby对象到link_to
方法,Rails会提取所有必要的数据调用显示它行动......
<%= link_to @viral.id, @viral %>
...居然会是...
<%= link_to @viral.id, viral_path(@viral.id) %>
它可能会清除你的疑虑:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to – RAJ
我已经通过的文件看(这是我得到了一段代码fr嗡,首先)但我正在寻找一个更容易理解的解释。来自一个地方从小到没有红宝石或钢轨的经验,API往往最终相当混乱。 –