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

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

ただいまの
回答率

88.93%

【Rails】チャット機能のshowアクションの実装[ActionCable]

受付中

回答 0

投稿

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

sho.tech

score 0

前提・実現したいこと

自作のWEBサイトにてチャット機能を導入したいです。
userとadmin間のチャット機能を実装中です。admin側からユーザー詳細ページにアクセスし、
メールアイコンからチャットルームに入室して、やり取りが出来るようにしたいです。
admin側はログイン状態、user側はログイン有無関係無くメッセージを受け付けられるようにしたいです。
下記サイトを参考にしています。

https://qiita.com/yuto_1014/items/249c93970780b498d86e

上記サイトではuser同士のやり取りですが、今回はuserとadmin間です。

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

ユーザー詳細ページにリンク用のアイコンが表示されない。
エラーメッセージは表示されていません。
アイコン以外の情報は表示されています。

該当のソースコード

show.html.haml

.user-profile-header
  <プロフィール詳細>
  .profile
    = image_tag @user.image.url, alt: "NoImage"
    %br
    【ユーザー名】
    = @user.name
    %br
    【性別】
    = @user.sex
    %br
    【出身地】
    = @user.birth_place
    %br
    【プロフィール】
    = @user.profile
    -if user_signed_in?
      - unless @user.id == current_user.id
        - if @isRoom == true
          = link_to room_path(@roomId) do
            %button#dm_submit
              %i.fas.fa-envelope
        - else
          = form_for @room, url: rooms_path do |f|
            = fields_for @entry do |e|
              = e.hidden_field :user_id, :value=> @user.id
            %button#dm_submit{type="submit"}
              %i.fas.fa-envelope
class UsersController < ApplicationController

  def show
    @user = User.find(params[:id])
    if user_signed_in?
      @currentUserEntry = Entry.where(user_id: current_user.id)
      @userEntry = Entry.where(user_id: @user.id)
          unless @user.id == current_user.id
            @currentUserEntry.each do |cu|
              @userEntry.each do |u|
                if cu.room_id == u.room_id then
                  @isRoom = true
                  @roomId = cu.room_id
                end
              end
            end
            unless @isRoom
              @room = Room.new
              @entry = Entry.new
            end
          end
    end
  end

  def edit
  end

  def update
    if current_user.update(user_params)
      redirect_to root_path
    else
      render :edit
    end
  end

  private

  def user_params
    params.require(:user).permit(:name, :birth_place, :birth_date, :profile, :image)
  end

end
class AdminsController < ApplicationController

  def show
    if admin_signed_in?
      @currentAdminEntry = Entry.where(admin_id: current_admin.id)
      @adminEntry = Entry.where(admin_id: @admin.id)
          unless @admin.id == current_admin.id
            @currentAdminEntry.each do |cu|
              @adminEntry.each do |u|
                if cu.room_id == u.room_id then
                  @isRoom = true
                  @roomId = cu.room_id
                end
              end
            end
            unless @isRoom
              @room = Room.new
              @entry = Entry.new
            end
          end
    end
  end

  def edit
  end

  def update
    if current_admin.update(admin_params)
      redirect_to salontoppage_path
    else
      render :edit
    end
  end

  private

  def admin_params
    params.require(:admin).permit(:name, :category, :birth_place, :profile, :image)
  end

end


userモデルを参考に、admin用に記載を追記しています。
プログラミング初心者にて、初投稿となります。ご教示のほど宜しくお願い致します。
※他に必要情報あれば教えてください。

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

rails 6.0.3.2
ruby 2.6.5
jquery-rails 4.4.0
haml-rails 2.0.1

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

まだ回答がついていません

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

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

関連した質問

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