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

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

ただいまの
回答率

87.79%

メッセージ送信してビューに反映されない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 766

score 32

簡易チャットアプリでメッセージ送信機能の実装をやっています。
まず、送信ボタン押すと送信され、データベースにレコードの保存は出来ました。
やりたい内容は、送信されても写したいビューに反映されません。
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


再度ご回答お願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

action create の結果は、無指定の場合 create.html を探しに行きます。
それは有りますか?(ないとエラーになると思うのであるのかなとは思いますが)

多くの場合は、create成功すると show.html 失敗すると new.htmlに行くようにします。showはありますか?
create.html、show.htmlがあればみせてください

routs.rb全体を見せてください。でないと回答が難しい

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/01/23 16:43

    解決してませんが一度、内容を整理するため、別に質問を作成しました。

    キャンセル

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

  • ただいまの回答率 87.79%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る