我正在尝试在导航栏中使用link_to方法,但我显然缺乏理解其实际工作方式的基础知识。
<% link_to "Viral", @viral %>
我的印象是“病毒”是链接的标签,但我不知道@viral是什么。该路由链接到控制器/视图(即病毒控制器和视图),如果是这样,路由会是什么样的?我正在尝试为不同的文章创建类别页面,并认为这将是最明显的导航方式。
答案 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") %>
-
因此...
@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分配的对象。
这意味着如果您将有效的Ruby对象传递给link_to
方法,Rails将提取所有必要的数据以调用 show 操作...
<%= link_to @viral.id, @viral %>
......实际上......
<%= link_to @viral.id, viral_path(@viral.id) %>