Ruby on Rails link_to方法

时间:2016-01-08 13:00:33

标签: ruby-on-rails

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

<% link_to "Viral", @viral %>

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

4 个答案:

答案 0 :(得分:1)

按照Rails惯例,link_to会将模型实例转换为链接到通讯员和RESTful展示操作的网址。

所以在你的例子中

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

相当于

<%= link_to "Viral", viral_path(@viral) %>

您将在Docs中获得更多信息。

答案 1 :(得分:0)

@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" %>

答案 2 :(得分:0)

@viral是一个变量(对象)

link_to是一个帮助方法,它使得html链接

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

将构建显示操作的链接,但如果您需要设置另一个路径,请使用:

<% link_to "Viral", viral_path %>

您可以在终端

中看到的所有路径
rake routes

答案 3 :(得分:0)

您的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",这意味着你可以使用...... {/ p>代替your_link_method(上图)。

#config/routes.rb
resources :virals

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

-

因此...

@viralinstance variable - 在类的实例(在本例中为您的控制器)期间设置的变量:

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

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

这意味着如果您将有效的Ruby对象传递给link_to方法,Rails将提取所有必要的数据以调用 show 操作...

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

......实际上......

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