ArgumentErrorについて

初めに

  • Progateにて躓いたところをアウトプットして学習効率を上げるために書きます。

  • 備忘録としての意味もあります。

  • めちゃめちゃ初歩的なエラーですが、お付き合いいただければ幸いです。

背景

  • userのshowページにeditページへのリンクを作成し、editページに遷移させるまでの流れを作ります

エラー内容

  • ArgumentError

  • メソッドの引数が正しくない時や足りない時に発生するエラー

  • ターミナル上でThis can lead to potential routing problemsの記載あり

コード

routes.rb
Rails.application.routes.draw do


  post "users/create" => "users#create"
  get "signup" => "users#new"
  get "users/index" => "users#index"
  get "users/:id" => "users#show"
  get "users/:id/edit" => "#users/edit"
  get "posts/index" => "posts#index"
  get "posts/new" => "posts#new"
  get "posts/:id" => "posts#show"
  post "posts/create" => "posts#create"
  get "posts/:id/edit" => "posts#edit"
  post "posts/:id/update" => "posts#update"
  post "posts/:id/destroy" => "posts#destroy"
  
  get "/" => "home#top"
  get "about" => "home#about"
end
users_controller
class UsersController < ApplicationController
  def index
    @users = User.all
  end
  
  def show
    @user = User.find_by(id: params[:id])
  end
  
  def new
    @user = User.new
  end
  
  def create
    @user = User.new(name: params[:name], email: params[:email])
    if @user.save
      flash[:notice] = "ユーザー登録が完了しました"
      redirect_to("/users/#{@user.id}")
    else
      render("users/new")
    end
  end
  
  # editアクションを作成してください
  def edit
    @user = User.find_by(id: params[:id])
  end
  
end
users/show
<div class="main user-show">
  <div class="container">
    <div class="user">
      <h2><%= @user.name %></h2>
      <p><%= @user.email %></p>
      <!-- ユーザー編集ページへのリンクを作成してください -->
      <%=link_to("編集","/users/#{@user.id}/edit")%>
      
      
    </div>
  </div>
</div>
users/edit
<div class="main users-edit">
  <div class="container">
    <div class="form-heading">ユーザー情報の編集</div>
    <div class="form users-form">
      <div class="form-body">
        <p>ユーザー名</p>
        <!-- nameを初期値として表示してください -->
        <input value="<%=@user.name %>" >
        <p>メールアドレス</p>
        <!-- emailを初期値として表示してください -->
        <input value="<%=@user.email%>">
        <input type="submit" value="保存">
      </div>
    </div>
  </div>
</div> 

考えたこと

  • rails sをターミナルで打った時にはエラーが生じているので、ルーティングに問題がある?

  • ルーティングの順番に問題がある?

  • This can lead to potential routing problemsより綴りが間違っている?

修正

  • get "users/:id/edit" => "#users/edit"→get "users/:id/edit" => "users#edit"

  • ルーティングの大枠は変わらないので、上下のルーティングを見ながら書けばよかった。

ヘッダーから一覧ページに遷移するときにuninitialized constant UsersControllerというエラー

初めに

  • Progateで躓いたところのアウトプットを行うことにより学習効率を向上させる狙いと、備忘録がてらに書いていきます。

エラー内容

  • ヘッダーの登録者一覧からから一覧ページ遷移する際にエラーが生じた

  • Railsで定数やclassが定義されていないエラー

コード内容

routes.erb
Rails.application.routes.draw do
  # newアクションへのルーティングを追加してください
  get "users/new" => "users#new"
  
  get "users/index" => "users#index"
  get "users/:id" => "users#show"

  get "posts/index" => "posts#index"
  get "posts/new" => "posts#new"
  get "posts/:id" => "posts#show"
  post "posts/create" => "posts#create"
  get "posts/:id/edit" => "posts#edit"
  post "posts/:id/update" => "posts#update"
  post "posts/:id/destroy" => "posts#destroy"
  
  get "/" => "home#top"
  get "about" => "home#about"
end 
users_controller
class UsersController < ApplicationController
  def index
    @users = User.all
  end
  
  def show
    @user = User.find_by(id: params[:id])
  end
  
end
posts/index.html.erb
<div class="main users-index">
  <div class="container">
    <h1 class="users-heading">ユーザー一覧</h1>
    <% @users.each do |user| %>
      <div class="users-index-item">
        <div class="user-right">
          <%= link_to(user.name, "/users/#{user.id}") %>
        </div>
      </div>
    <% end %>
  </div>
</div>
posts/application.html.erb
<!DOCTYPE html>
<html>
  <head>
    <title>TweetApp</title>
    <%= csrf_meta_tags %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <header>
      <div class="header-logo">
        <%= link_to("TweetApp", "/") %>
      </div>
      <ul class="header-menus">
        <li>
          <%= link_to("TweetAppとは", "/about") %>
        </li>
        <li>
          <%= link_to("投稿一覧", "/posts/index") %>
        </li>
        <li>
          <%= link_to("新規投稿", "/posts/new") %>
        </li>
        <li>
          <%= link_to("ユーザー一覧", "/users/index") %>
        </li>
        <!-- 新規登録ページへのリンクを作成してください -->
        <li>
          <%= link_to("新規登録","/users/new")%>
        </li>
        
      </ul>
    </header>

    <% if flash[:notice] %>
      <div class="flash">
        <%= flash[:notice] %>
      </div>
    <% end %>
    
    <%= yield %>
  </body>
</html>

考えたこと

*ヘッダーから一覧は遷移ができている

  • エラーの内容から@users = users.allに問題がある

  • name errorから@users = users.allに間違いがる可能性がある

  • 検索結果からusers.rbがない場合やコントローラの名前ミスの可能性もある

結果

*@users = Users.all をUser.allに直すことで解決

ヘッダーから一覧ページに遷移するときにuninitialized constant UsersControllerというエラー

初めに

  • Progateで躓いたところのアウトプットを行うことにより学習効率を向上させる狙いと、備忘録がてらに書いていきます。

エラー内容

  • ヘッダーの登録者一覧からから一覧ページ遷移する際にエラーが生じた

  • Railsで定数やclassが定義されていないエラー

コード内容

routes.erb
Rails.application.routes.draw do
  # newアクションへのルーティングを追加してください
  get "users/new" => "users#new"
  
  get "users/index" => "users#index"
  get "users/:id" => "users#show"

  get "posts/index" => "posts#index"
  get "posts/new" => "posts#new"
  get "posts/:id" => "posts#show"
  post "posts/create" => "posts#create"
  get "posts/:id/edit" => "posts#edit"
  post "posts/:id/update" => "posts#update"
  post "posts/:id/destroy" => "posts#destroy"
  
  get "/" => "home#top"
  get "about" => "home#about"
end 
users_controller
class UsersController < ApplicationController
  def index
    @users = User.all
  end
  
  def show
    @user = User.find_by(id: params[:id])
  end
  
end
posts/index.html.erb
<div class="main users-index">
  <div class="container">
    <h1 class="users-heading">ユーザー一覧</h1>
    <% @users.each do |user| %>
      <div class="users-index-item">
        <div class="user-right">
          <%= link_to(user.name, "/users/#{user.id}") %>
        </div>
      </div>
    <% end %>
  </div>
</div>
posts/application.html.erb
<!DOCTYPE html>
<html>
  <head>
    <title>TweetApp</title>
    <%= csrf_meta_tags %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
    <header>
      <div class="header-logo">
        <%= link_to("TweetApp", "/") %>
      </div>
      <ul class="header-menus">
        <li>
          <%= link_to("TweetAppとは", "/about") %>
        </li>
        <li>
          <%= link_to("投稿一覧", "/posts/index") %>
        </li>
        <li>
          <%= link_to("新規投稿", "/posts/new") %>
        </li>
        <li>
          <%= link_to("ユーザー一覧", "/users/index") %>
        </li>
        <!-- 新規登録ページへのリンクを作成してください -->
        <li>
          <%= link_to("新規登録","/users/new")%>
        </li>
        
      </ul>
    </header>

    <% if flash[:notice] %>
      <div class="flash">
        <%= flash[:notice] %>
      </div>
    <% end %>
    
    <%= yield %>
  </body>
</html>

考えたこと

*ヘッダーから一覧は遷移ができている

  • エラーの内容から@users = users.allに問題がある

  • name errorから@users = users.allに間違いがる可能性がある

  • 検索結果からusers.rbがない場合やコントローラの名前ミスの可能性もある

結果

*@users = Users.all をUser.allに直すことで解決

ボタンに変化をつけアクティブにする

初めに

  • Progateを学習して自分が躓いたところを自分の言葉でアウトプットすることで学習効率を上げると共に備忘録がてらに書きます。

ボタンの背景をアクティブにすることで動きのあるボタンを作るための材料を作る。

  • クリック時にボタンの背景を赤くする

    *今回はわかりやすくするためにクリック時を赤にしました。  

ボタンに変化をつける前のプレビュー

ボタンに変化をつけた後のプレビュー

ボタンに変化をつける前のHTML、CSS

HTML
<div class="login-bttn">
      <a href="#" class="login-btn">log in</a>
    </div>
CSS
.login-bttn{
  text-align:center;
  padding:50px;
  
}

.login-btn{
  padding:20px 30px;
  box-shadow: 0 7px #1a7940;
  background-color:#4dca88;
}

セレクタに:activeを使うことでクリック時のみにアクティブにする

CSS
.login-bttn{
  text-align:center;
  padding:50px;
  
}

.login-btn{
  padding:20px 30px;
  box-shadow: 0 7px #1a7940;
  background-color:#4dca88;
}

.login-btn:active{
  background-color :red;
}
  • 今回はボタンの部分のみアクティブになって欲しいのでlogin-btnに:activeを用いた。

    *もし背景全体をアクティブにしたければlogin-btnの親要素である、login-bttnに:activeを用いると良い 。

login-bttnに:activeを用いたときのプレビュー

結語

  • ボタンに変化をつけたいときはセレクタに:activeを用いる。

  • 元々記述しているセレクタに記述するのではなく、:activeようにアクティブにしたいセレクタを記述して:activeを用いる。

  • アクティブにしたい範囲をきちんと明確にして用いることが大切である。

ボタンに変化をつけアクティブにする

初めに

  • Progateを学習して自分が躓いたところを自分の言葉でアウトプットすることで学習効率を上げると共に備忘録がてらに書きます。

ボタンの背景をアクティブにすることで動きのあるボタンを作るための材料を作る。

  • クリック時にボタンの背景を赤くする

    *今回はわかりやすくするためにクリック時を赤にしました。  

ボタンに変化をつける前のプレビュー

ボタンに変化をつけた後のプレビュー

ボタンに変化をつける前のHTML、CSS

HTML
<div class="login-bttn">
      <a href="#" class="login-btn">log in</a>
    </div>
CSS
.login-bttn{
  text-align:center;
  padding:50px;
  
}

.login-btn{
  padding:20px 30px;
  box-shadow: 0 7px #1a7940;
  background-color:#4dca88;
}

セレクタに:activeを使うことでクリック時のみにアクティブにする

CSS
.login-bttn{
  text-align:center;
  padding:50px;
  
}

.login-btn{
  padding:20px 30px;
  box-shadow: 0 7px #1a7940;
  background-color:#4dca88;
}

.login-btn:active{
  background-color :red;
}
  • 今回はボタンの部分のみアクティブになって欲しいのでlogin-btnに:activeを用いた。

    *もし背景全体をアクティブにしたければlogin-btnの親要素である、login-bttnに:activeを用いると良い 。

login-bttnに:activeを用いたときのプレビュー

結語

  • ボタンに変化をつけたいときはセレクタに:activeを用いる。

  • 元々記述しているセレクタに記述するのではなく、:activeようにアクティブにしたいセレクタを記述して:activeを用いる。

  • アクティブにしたい範囲をきちんと明確にして用いることが大切である。

結果を変える思考

結果を変えるには思考を変える必要がある。

 

なぜなら結果を導くのは行動であるし、

行動させるには思考を変えなくてはいけないからである。

 

私の尊敬する野村克也さんは

心が変われば態度が変わる。

態度が変われば行動が変わる。

行動が変われば習慣が変わる。

習慣が変われば人格が変わる。

人格が変われば運命が変わる。

運命が変われば人生が変わる

 

とおっしゃっていました。

 

つまり本気で人生を変えたければその基本である思考、心を変えていく必要があるのです。

 

人間の脳細胞というのは1ヶ月もあれば変化できると言われていますが、つまり1ヶ月本気で思考を変えようと思えば変えられるのです。

 

しかし今までの思考を変えることは想像以上に難しく、多くの人は挫折してしまいます。

 

それはなぜか?

 

環境が悪く、その環境に自分が身を置いてしまっているからです。

 

わたし達は良くも、悪くもミラーニューロンの働きによって周りの環境や情報、人間関係に強く影響されて思考が形成されています。

 

周りに自分の理想とする思考を持っている人が多数存在すれば理想の思考に容易に辿り着くのですが

 

ほとんどの人はそうではなく、足を引っ張るような考え方の人が周りにいるものです。

 

だから周りの環境を変えるのが思考を変えるのが1番な有効な手段と言えるのです。

 

しかし多くの人がいきなり全ての環境を変えることができません。切りたくても切れない人間関係ありますから

 

それでは普通の人は変わらないのか?というとそうではありません。

 

わたしからの提案として

変われるところから変わっていこうということです。

例えば

耳から聞く情報は自分にとって身になる情報を取り入れる。

 

娯楽に時間をなるべく使わない

 

理想の現実を手に入れている人の動画を毎日聞いて自己洗脳する

 

意外と簡単かも思われるかもしれないが

 

環境が180度変わるわけではないので、これまた意外と難しいんです。

 

しかし小さな変化こそ大切にして

最終中に大きな変化につなげていくことこそ

確実な理想の自分への一歩と言えるのです。

勝ち組投資家はフリーランチを見逃さない

 

 


勝ち組投資家が大切にする概念には

フリーランチ=アービトラージがあります。

 

アービトラージとは裁定機会ともいわれ、

投資の世界では稀なのですが、確実に利益を得られる機会を言います。

 

もちろん市場の基本構造は不確実性で満ちているので、まずそんな美味しい機会はないのですから見つけることは非常に難しいのです。

 

だから勝ち組投資家たちは市場を幅広く、

意地汚く貪欲にタダ飯の機会を見つけていかなくてはいけません。

 


そんなアービトラージはどんなところにあるのでしょうか?

 

基本的にはみんなが氣にしないようなところだったり、嫌がっているところ、不良債権を抱えているところなど、一見すると

リスクしかないようなところにアービトラージは眠っているのです。

 


ほとんどの投資家はリスクを嫌ったり、物事の本当に価値のあるものを見つけることが非常に苦手なので、もしかしたら痛手を負うかもしれないところに乗っかることはできないのですが、このハードルを乗り越えることができる数少ない投資家はフリーランチにありつけ勝ち組投資家になれるのです。

 


なぜ勝ち組投資家は一見するとリスクしかないようなところでも手を出しにいけるのかと言えば、市場で利益を上げることの難しさを人一倍理解していて、不確実性に満ちたマーケットではアービトラージを得る機会はほとんどないことを骨の髄まで理解しているからです。

 

 

 

まとめ

・フリーランチ=アービトラージ

・勝ち組投資家ほど、フリーランチに貪欲であ

 る。だから幅広く、意地汚くてもフリーラン

 チを取りにくる。

・マーケットは不確実性な要素が強いため、

 アービトラージのような確実に儲けられる機

 会はほとんどない。