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

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

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

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

Ruby

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

Q&A

1回答

365閲覧

rails tutorialの第2章についての質問があります

aaa10

総合スコア13

Ruby on Rails 5

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

Ruby

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

0グッド

1クリップ

投稿2018/01/22 14:04

編集2022/01/12 10:55

###前提・実現したいこと
rails tutorialの2.3.3演習1についての質問です。
「ユーザーのshowページを編集し、ユーザーの最初のマイクロポストを表示してみましょう。同ファイル内の他のコードから文法を推測してみてください。うまく表示できたかどうか、/users/1 にアクセスして確認してみましょう。」
という問題です。

users_controller.rbに下記のように@micropost = Micropost.find(params[:id])を追加 def set_user @user = User.find(params[:id]) @micropost = Micropost.find(params[:id]) end ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー usersのshow.html.erbに下記のように追加 <p> <strong>Content:</strong> <%= @micropost.content %> </p>

googleで調べたところこのようにするとユーザーのshowページに表示されると書かれていたのですがうまくいきません。

なのでusers_controller.rbの@micropost = Micropost.find(params[:id])の.findを.whereに変更したのですが今度は「NoMethodError in Users#show」「undefined method `content' for #Micropost::ActiveRecord_Relation:0x007fe3757f9558」というエラーが出ました。

migrationファイルはこれです。

class CreateMicroposts < ActiveRecord::Migration[5.1] def change create_table :microposts do |t| t.text :content t.integer :user_id t.timestamps end end end

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

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

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

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

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

mtdsnsk

2018/01/22 14:20

>うまくいきません 具体的にどういう出力を期待して、実際の出力はなんだったか書かないと回答が難しいと思います。エラーコードなども分れば追記してください
mtdsnsk

2018/01/22 14:55

Micropostモデルを生成した際のmigrationファイルもをアップしてください
guest

回答1

0

/users/1 にアクセスするのですから,params[:id] には Userid である 1 が入っています。
その値を使って,set_user メソッドの中で

rb

1@user = User.find(params[:id]) 2@micropost = Micropost.find(params[:id])

とやっています。
@user はいいですが,@micropost のほうは Userid のはずの値で Micropost を検索しているんですよ。おかしいですね。

User モデルには

rb

1has_many :microposts

があるでしょう?

だから,@user のマイクロポストは

rb

1@user.microposts

で得られるはずです。
そのうち,一番最初のものは

rb

1@user.microposts.first

ですね。

投稿2018/01/22 15:26

scivola

総合スコア2108

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問