繁体   English   中英

Ruby on Rails的link_to方法

[英]Ruby on Rails link_to method

我正在尝试在导航栏中使用link_to方法,但是我显然缺乏了解其实际工作原理的基础知识。

<% link_to "Viral", @viral %>

我的印象是“病毒”是链接的标签,但是我不知道@viral是什么。 该路由是否链接到控制器/视图(即,病毒控制器和视图),如果是,路由将是什么样? 我正在尝试为不同的文章创建类别页面,并认为这将是最明显的导航方式。

根据Rails的约定, link_to将模型实例转换为URL,该URL链接到相应的RESTful show操作。

所以在你的例子中

<%= link_to "Viral", @viral %>

相当于

<%= link_to "Viral", viral_path(@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为“ routes”设置了一系列“ helper”方法 ,这意味着您可以使用...而不是your_link_method (上面)。

#config/routes.rb
resources :virals

<%= link_to "Viral", viral_path("12") %>

-

所以...

@viral是一个实例变量 -在类实例(在本例中为您的控制器)的实例期间设置的变量:

#app/controllers/virals_controller.rb
class ViralsController < ApplicationController
   def show
      @viral = Viral.find params[:id]
   end
end

因为Ruby是面向对象的 ,所以它希望每个@instance_variable都是Ruby分配的对象

这意味着,如果将有效的Ruby对象传递给link_to方法,Rails将提取所有必需的数据以为其调用show动作。

<%= link_to @viral.id, @viral %>

...实际上将是...

<%= link_to @viral.id, viral_path(@viral.id) %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM