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

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

ただいまの
回答率

90.53%

  • Ruby

    9214questions

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

ArgumentError in Users#index が発生しました

解決済

回答 2

投稿 編集

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

kazuki0714

score 1

マッチングアプリを作っております。

ログイン画面押した後や、ユーザーのプロフィール画面でArgumentErrorが発生します。

Nil location provided. Can't build URI.
とはどういう意味でしょうか?
ググっても出てこずでして。。。

イメージ説明

イメージ説明

画像をアップする際にエラーが発生するのかと思っていたのですが
/users/:idを見るとちゃんと登録されていたりします。

正直原因が分かっていないです。

何かお分かりであればアドバイスお願いいたします。

app/controllers/users_controller.rb

class UsersController < ApplicationController
  def index
    @users = User.where.not(id: current_user.id)
  end

  def show
    @user = User.find_by(id: params[:id])
  end
end

app/views/users/show.html.erb

<div class='usershowPage'>
  <div class='container'>
    <header class="header">
      <p class='header_logo'>
        <%= link_to image_tag("techpit-march-icon.png"), users_path %>
      </p>
    </header>
    <div class='userInfo'>
      <div class='userInfo_img'>
        <%= image_tag @user.img_name.url(:thumb) %>
      </div>
      <div class='userInfo_name'><%= @user.name%></div>
      <div class='userInfo_selfIntroduction'><%= @user.self_introduction %></div>
    </div>
    <% if current_user.id == @user.id %>
      <div class='userAction'>
        <div class="userAction_edit userAction_common">
          <%= link_to(content_tag(:i, "", class: 'fas fa-edit fa-2x'), edit_user_registration_path) %>
          <span>情報を編集</span>
        </div>
        <div class='userAction_logout userAction_common'>
          <%= link_to(content_tag(:i, "", class: 'fas fa-cog fa-2x'), destroy_user_session_path, method: :delete) %>
          <span>ログアウト</span>
        </div>
      </div>
    <% end %>
  </div>
</div>

app/views/users/index.html.erb

<div class="topPage">
  <nav class="nav">
    <ul>
      <li class="personIcon"><%= link_to(content_tag(:i, "", class: 'fas fa-2x fa-user'), user_path(current_user.id)) %></li>
      <li class="appIcon"><%= link_to image_tag("techpit-march-icon.png"), users_path %></li>
      <li class="messageIcon"><%= link_to(content_tag(:i, "", class: 'fas fa-2x fa-comments'), matching_index_path) %></li>
    </ul>
  </nav>
  <div id="tinderslide">
    <ul>
      <% @users.each do |user| %>
        <li data-user_id="<%= user.id %>">
          <div class="userName"><%= user.name %></div>
          <%= image_tag user.img_name.url(:thumb) %>
          <div class="like"></div>
          <div class="dislike"></div>
        </li>
      <% end %>
    </ul>
    <div class="noUser">近くにお相手がいません。</div>
  </div>
  <div class="actions" id="actionBtnArea">
      <a href="#" class="dislike"><i class="fas fa-times fa-2x"></i></a>
      <a href="#" class="like"><i class="fas fa-heart fa-2x"></i></a>
  </div>
</div>
<script>
  // スワイプするユーザー数の定数を定義
  var usersNum = <%= @users.length %>
  var currentUserIndex = 0;
  var postReaction = function (user_id, reaction) {
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
        }
    });
    $.ajax({
      type: "POST",
      url: "<%= reactions_path %>",
      data: {
        user_id: user_id,
        reaction: reaction,
      },
      success: function(j_data){
        console.log("success")
      }
    });
  }
  $("#tinderslide").jTinder({
    onDislike: function (item) {
      currentUserIndex++;
      checkUserNum();
      var user_id = item[0].dataset.user_id
      postReaction(user_id, 'dislike')
    },
    onLike: function (item) {
      currentUserIndex++;
      checkUserNum();
      var user_id = item[0].dataset.user_id
      postReaction(user_id, 'like')
    },
    animationRevertSpeed: 200,
    animationSpeed: 400,
    threshold: 1,
    likeSelector: '.like',
    dislikeSelector: '.dislike'
  });
  $('.actions .like, .actions .dislike').click(function(e){
    e.preventDefault();
    $("#tinderslide").jTinder($(this).attr('class'));
  });

  function checkUserNum() {
    // スワイプするユーザー数とスワイプした回数が同じになればaddClassする
    if (currentUserIndex === usersNum){
      $(".noUser").addClass("is-active");
      $("#actionBtnArea").addClass("is-none")
      return;
    }
  }
</script>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • YakumoSaki

    2019/03/24 19:37

    エラーだけを見ると、 imgタグを作る際に使用する user.img_name.url がnilだった。というように見えます。
    DB上のデータを確認してみると解決の糸口が見つかるかも知れません。

    キャンセル

  • kazuki0714

    2019/03/24 20:46

    ありがとうございます。
    User.allで調べて見るとimg_nameがnilのユーザーがいて、destroyでそのユーザーを削除すると解決しました。

    キャンセル

回答 2

check解決した方法

0

  1. User.allで確認
  2. img_nameがnilのユーザーがいないか調べる
  3. User.destroyでそのユーザーを削除

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

User.allで確認
img_nameがnilのユーザーがいないか調べる
User.destroyでそのユーザーを削除

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • Ruby

    9214questions

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