teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

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

Ruby on Rails 6

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

686閲覧

form_withで入力されたものを, 再び別のform_withに入れ直したいです.

sasaharukimedes

総合スコア27

Ruby

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

Ruby on Rails 6

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2021/02/26 07:36

編集2021/03/01 06:32

0

1

前提・実現したいこと

form_withで色々と入力してもらって, postとして別のユーザーに送信するアプリを開発中です. その中で, 返信機能を実装したいのですが, 返信用のform_withに予め入れておきたい箇所 があるのですが, それらをどのように入れればいいのかイマイチわかりません, 教えて下さい.
以下の例をあげると, 返信用ではタイトルの部分のみ入れ替えて表示して書き換えなくて済むようにしたいです.

ex)
タイトル: 不安なあなたへ
本文: 僕は明日試験の本番です. 僕も不安ですが頑張りましょう
送り主: 崖っぷち受験生 より
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
返信用
タイトル: 崖っぷち受験生へ
本文: 明日大事プレゼンがある者です. お互いに頑張りましょうね.
送り主: 不安な社会人 より

ソースコードのplaceholderに関しては, 参考までにという意味でユーザーに表示させています.

発生している問題・エラーメッセージ

一度form_withで受け取ったpostを, 返信用のpostに予め入れられるところを入れておきたいです.

該当のソースコード

new.html.erb

<div class="main posts-new"> <div class="container"> <h1 class="form-heading">手紙を書く</h1> <%= form_with scope: :post, url: posts_path, local: true do |form| %> <% if @post.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2> <ul> <% @post.errors.full_messages.each do |msg|%> <li><%= msg %></li> <% end %> </ul> </div> <% end %> <div class="form"> <div class="form-body"> <%= form.label :宛名 %><br> <%= form.text_field :dear , placeholder: "どこかの誰かへ"%> <%= form.label :本文 %><br> <%= form.text_area :content %> <%= form.label :差出人 %><br> <%= form.text_field :from, placeholder: "試される大地の若者より"%> <%= form.submit value="投函する" %> </div> </div> <% end %> </div> </div>

schema.rb

create_table "posts", force: :cascade do |t| t.string "dear" t.text "content" t.string "from" t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false end

試したこと

もともとのform_withで入力された内容 (タイトル)をplaceholderないしはデフォルトで表示させられるのかなとも思ったのですが, 見つけられなかったので質問させていただきました.

posts_controller.rb

def reply @next_dear = Post.params[:from] @post = Post.new(post_params) @post.sender_id = @post.receiver_id @post.receiver_id = current_user.id @post.save! redirect_to posts_path end

reply.html.erb の一部

<div class="form"> <div class="form-body"> <%= form.label :宛名 %><br> <%= form.text_field :dear, value: @next_dear%> <%= form.label :本文 %><br> <%= form.text_area :content %> <%= form.label :差出人 %><br> <%= form.text_field :from, placeholder: "#{username}より"%> <%= form.submit value="投函する" %> </div> </div>

補足情報(FW/ツールのバージョンなど)

ruby 2.6.5
rails 6.0.3

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

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

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

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

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

guest

回答1

0

ベストアンサー

form_withの初期値は、
form_with model: @インスタンス ←そのフォームに適切なインスタンスである必要がある
と書くか、
<%= form.text_field :フィールド名, value: あらかじめ入力したい初期値 %>
と書くことで実現できます。

両方を行う必要はないです。
どちらか一方で可能です。

投稿2021/02/26 08:25

siruku6

総合スコア1382

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

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

sasaharukimedes

2021/02/27 08:22

@siruku6さん ありがとうございます. 質問ですが, "<%= form.text_field :フィールド名, value: あらかじめ入力したい初期値 %>" こっちを書く場合予め入力したい初期値ではなくインスタンス変数か何かに格納した, 別のform_withの内容を表示させることは可能でしょうか? 初期値ではなく, 先程の例のようにユーザーが最初に入力したもの(1送り主→2タイトルへ) を返信用のちがうformに入れたいのですが, 伝わらなかったらすみません.
siruku6

2021/02/28 01:27

>こっちを書く場合予め入力したい初期値ではなくインスタンス変数か何かに格納した, 別のform_withの内容を表示させることは可能でしょうか? 可能です。 「インスタンス変数か何かに格納」ができているのであれば、 "<%= form.text_field :フィールド名, value: インスタンス変数.カラム名 %>" もしくは、インスタンス変数を使わないのであれば、 "<%= form.text_field :フィールド名, value: 変数名 %>" となります。
sasaharukimedes

2021/03/01 04:22

@siruku6さん ありがとうございます. 少しコード書いたら見た見てもらってもよろしいでしょうか?
sasaharukimedes

2021/03/02 00:09 編集

@siruku6さん 少し自分なりに書いてみたので, 見ていただけませんか?受け取ったポストのfromの部分をreplyする際に, dearにするということでnext_dearとしてみたのですが, これを正しく受け取れているのか不安なので, そこら辺も見ていただきたいです.
siruku6

2021/03/03 11:15

今あるソースだけだと判断できないため、 ①reply.html.erb全体 ②replyアクションのトリガーとなるリンクやボタンのあるviewファイル ③reply.html.erbの"投函する"ボタンを押下した場合にトリガーされるアクション は最低でも追記が必要そうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問