1

Railsアプリのホームページに1つの記事へのリンクを1つ表示しようとしています

ここに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 

私は今2つの記事を持っているので...それぞれが行うため、すべての記事を取得してビューに吐き出すために理解していますが、特定の記事へのリンクのみが表示されるようにするにはどうすればよいですか?

4

3 に答える 3

2

link_toオプションのセットによって作成されたURLを使用して、指定された名前のリンクタグを作成します。したがって、コードを次のように変更した場合、記事が文字列を返すtitleという名前のメソッドに応答する場合:

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

ただし、article.titleこれは単なる例であり、記事に方法がない場合はまったく問題ありませんtitle。そこでは、さまざまなリンクを識別するのに役立つ任意の文字列を使用できます。

その他のオプションについては、 APIドキュメントをお読みください。

特定の記事へのリンクを1つ表示したい場合は、コントローラーで次のようにすることができます。

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

ここでarticle_id、パラメータとして来ます。

于 2012-12-12T18:26:44.090 に答える
1

すべての記事ではなく、単一のレコードを表示するという意味ですか?

その場合は、コントローラーから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 に答える