投稿モデルがあります...このモデルをWebページのインデックスページに表示しようとしています。
<% @posts.each do |post| %>
<%= @posts[1].title %>
<%end%>
上記のコードの問題は、投稿が3つあるため、タイトルが3回表示されることです。このコードを編集して、一度だけ表示するようにするにはどうすればよいですか。
投稿モデルがあります...このモデルをWebページのインデックスページに表示しようとしています。
<% @posts.each do |post| %>
<%= @posts[1].title %>
<%end%>
上記のコードの問題は、投稿が3つあるため、タイトルが3回表示されることです。このコードを編集して、一度だけ表示するようにするにはどうすればよいですか。
あなたはこれをするつもりでした:
<% @posts.each do |post| %>
<%= post.title %>
<%end%>
列挙子は、そのeach
変数を一度に 1 つずつ構文を持つブロックに渡しdo |variable|
ます。post
の各項目も同様@posts
です。
これは、Ruby と Rails の非常に基本的な概念です。これをさらに理解しないと、おそらく先に進むことはできません。ブロックと列挙子がどのように機能するかを理解するために、Ruby プログラミング言語 (Ruby プログラミング言語の非常に優れたチュートリアルおよびリファレンス) を読んで読むことをお勧めします。
「each」を使用すると、コントローラーに @posts = Posts.all があるため、すべての投稿が表示されます。これにより、これまでに書き込まれたすべての投稿が @posts インスタンス変数に与えられ、各列挙子はすべての投稿を出力します
タイトルだけを表示し、それも最初の投稿だけにしたい場合は、ビューに次のように書くことができます
<%= @posts.first.title %>