簡易チャットアプリでメッセージ送信機能の実装をやっています。
まず、送信ボタン押すと送信され、データベースにレコードの保存は出来ました。
やりたい内容は、送信されても写したいビューに反映されません。
routes.rb
root 'tweets#index' resource :tweets do
ルーティングはこのようになっていて、localhost:3000でメインとなるチャットのビューが表示されるようになっています。
ツイートの送信ボタンがあるルーティングはlocalhost:3000/tweets/newです。
送信されるとlocalhost:3000/tweetsに遷移されます。
送信して遷移されたビューはヘッダーのみ反映されていますが、ビューは反映されてなく、丸々無くなっています。
ヘッダーはapplication.html.hamlに記述しているため、反映されていると思います。
メッセージ送信されてビューに反映されると言うのはどう実装すればいいでしょうか?
createアクション以外必要でしょうか?
def create Tweet.create(text: tweet_params[:text], user_id: current_user.id) end private def tweet_params params.permit(:text) end
コントローラーはこのようになっています。
ツイートを投稿するビューは
.new-field = form_tag('/tweets', method: :post) do %h3.new-tweets ツイートする %textarea{placeholder: "ツイート文を入力してください", name: "text", cols: "50", rows: "20", class: "new-text"} %input{type: "submit", class: "new-submit"}/ %i.fas.fa-camera
このようになっています。
分かる方、ご教授お願いします…!
#補足
回答ありがとうございます。
確かにcreateアクションでツイート送信してるのにcreateファイルがないとおかしいですね。。。
create.html.hamlはありますが、何も記述していませんでしたので、
試しにメインのビュー(ツイートを反映したいビュー)ファイルをコピペしてcreate.html.hamlに貼り付けてみました。
そしたら送信された時に反映したいビュー(create.html.haml)へ遷移されました。
1つ問題は解決しましたが、ツイート内容が反映されません。
最初の質問でも言ったようにレコードには送信されたツイート内容を保存出来ているので、ビューに反映するやり方が分かりません。。。
create.html.hamlのファイルはこのようになっています。
.chat-main .tweets-block .user-name aaa .messages aaa %i.fas.fa-ellipsis-h .reply 返信 .time 時間 .tweets = link_to new_tweets_path do %i.fas.fa-pen
show.html.hamlも作成していますが、中身は空で何も書いてません。
コントローラーにはアクションを定義しただけで中は何も書いてません。
showは詳細ページを表示するためだと思ったのですが、ツイート送信時にも必要でしょうか?
routes.rbはこのようになっています。
Rails.application.routes.draw do devise_for :users root 'tweets#index' resource :tweets do end end
再度ご回答お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/23 07:43