質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

392閲覧

<%= render @post.comments %>でなぜパーシャルが呼び出される?

renren643

総合スコア279

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/02/08 08:30

posとcommentは1:nの関係です
posts/show.html.erb内で以下のようにrenderがなされ、commentのパーシャルに渡されているのですが、
なぜ、<%= render @post.comments %>で_comment.html.erbが呼び出されるのかわかりません

<div id="comments"> <h2>コメント数:<%= @post.comments.count %></h2>  <%= render @post.comments %> <h3>コメント投稿</h3>  <%= render "comments/form" %> </div>

また、_comment.html.erbも「@」をつけずに表示されているのはなぜなのでしょうか?

<div class="comment clearfix"> <div class="comment_content"> <p class="comment_name"><strong><%= comment.name %></strong></p> <p class="comment_body"><%= comment.body %></p> <p class="comment_time"><%= time_ago_in_words(comment.created_at) %> Ago</p> </div> </div>

comment_controller↓

def create @post = Post.find(params[:post_id]) @comment = @post.comments.build(comment_params) @comment.save redirect_to post_path(@post) end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

Railsがそのように作られているからです。「設定より規約」の一つです。

render @post.comments render partial: "comment", collections: @post.comments render partail: "comment", collections: @post.comments, as: "comment"

同じ意味ですが、Railsの規約に従ってファイル名や変数名を選べば、render @post.commentsと簡単にかけるようになっているわけです。

投稿2018/02/08 09:49

suzukis

総合スコア1449

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問