1

我正在尝试在我的 rails 应用程序的主页上显示一篇文章的链接

这是html代码:

      <% @articles.each do |article| %> 
        <%= link_to 'Show', article %>
      <% end %>

这是我的控制器:

class StaticPagesController < ApplicationController
  def home
@user = current_user
@articles = Article.all
  end

  def comics
 end
end

它显示在我的主页中,但显示如下

show show 

因为我现在有两篇文章......我理解它是因为每一篇都这样做,并且它会抓取所有文章并将其吐出到我的观点中,但我该怎么做才能只显示指向特定文章的链接?

4

3 回答 3

2

link_to使用由一组选项创建的 URL 创建给定名称的链接标记。因此,如果您将代码更改为如下所示,前提是该文章响应名为 title 的方法,该方法返回一个字符串:

<% @articles.each do |article| %>
  <%= link_to article.title, article %>
<% end %>

然而,article.title这只是一个例子,如果文章没有title方法也很好。您可以在那里使用任何字符串来帮助您识别不同的链接。

阅读API 文档以获取更多选项。

如果您想显示特定文章的一个链接,那么您可以在控制器中执行以下操作:

@article = Article.find(params[:article_id])

哪里article_id来作为参数。

于 2012-12-12T18:26:44.090 回答
1

您的意思是显示单个记录而不是所有文章?

如果是这样,只需从控制器返回一个。

def home
  .....
  @article  = Article.first 
end 

然后就 link_to 'show', @article

您可以将 Article.first 替换为但是您希望限制为要显示的特定文章

于 2012-12-12T18:27:44.980 回答
1

如果要显示特定文章,则需要在控制器中定义一个包含特定文章的实例变量,而不是所有文章 ( Article.all)

@article = Article.first

或者

@article = Article.find(id) # where id is the id of a specific article

然后,在您看来,而不是每个块,只需拥有

<%= link_to 'Show', @article %>
于 2012-12-12T18:28:26.447 回答