🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 5

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

Q&A

解決済

1回答

931閲覧

【RubyonRails5】あるアクションで定義されている変数値が、なぜか異なるアクションに引き継がれている件

ShinjiAsai

総合スコア51

Ruby on Rails 5

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

0グッド

1クリップ

投稿2019/10/24 08:11

Ruby on Railsの初学者です。**調べても、いまいち理解できないことがあったので質問します。**ProgateでRuby on Railsを学習していました。学習内容は以下の部分です。


  1. Tweet_appで新しく投稿を作った際に、もし140字以上で投稿し、新しい投稿ができなかった時にも、新規投稿しようとして記入した内容が消えないようにしたい。
  2. 新規投稿を司るcreateアクション内で、redirect_toを使って新規投稿ページを表示するようにしていたが、renderを使って直接、新規投稿ページ(new.html.erb)を表示するように変更。
  3. しかしnewアクションに変数を定義していなかったので、@post = Post.newと変数を新たに定義。
  4. new.html.erb上で投稿をミスした際も、記入した内容が消えないように表示されるようになった。

<該当部分のスライド>
イメージ説明
イメージ説明


ここで理解できなかったんですが、そもそもparams[:content]で投稿内容を取得しているのは、createアクション内ですよね?

newアクションに@postを定義したら、なぜcreateアクションでしか取得されていないはずのparams[:content]の内容まで、newアクションに定義されている変数で使えるようになるのでしょうか?

※もしnewアクション内でparams[:content]の内容を使いたいなら、newアクションでもparams[:content]の内容を取得しないといけないんじゃ・・・?と思いました。

ごめんなさい、説明がわかりにくくて。**そういうものなら、そういうものということで覚えようと思います!**でも、もし理由がわかるようでしたら、教えていただければ幸いです。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

そもそもcreateアクションから直接posts/newをレンダリングしているのでnewアクションは経由されていません。
なのでcreateアクションで取得したparams[:content]の情報を元にそのまま表示されています。

投稿2019/10/24 08:15

Mugheart

総合スコア2349

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

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

ShinjiAsai

2019/10/24 22:34

なるほど…。ぼくの中で、同じ名前のルーティング、コントローラー、ビューでなければ、参照しあえない的な考えがあったかもしれません! すっかりnewアクションの変数が使われているものとばかり考えていました…解決しました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問