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を用いたときのプレビュー
結語
ボタンに変化をつけアクティブにする
初めに
- 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を用いたときのプレビュー
結語
結果を変える思考
結果を変えるには思考を変える必要がある。
なぜなら結果を導くのは行動であるし、
行動させるには思考を変えなくてはいけないからである。
私の尊敬する野村克也さんは
心が変われば態度が変わる。
態度が変われば行動が変わる。
行動が変われば習慣が変わる。
習慣が変われば人格が変わる。
人格が変われば運命が変わる。
運命が変われば人生が変わる
とおっしゃっていました。
つまり本気で人生を変えたければその基本である思考、心を変えていく必要があるのです。
人間の脳細胞というのは1ヶ月もあれば変化できると言われていますが、つまり1ヶ月本気で思考を変えようと思えば変えられるのです。
しかし今までの思考を変えることは想像以上に難しく、多くの人は挫折してしまいます。
それはなぜか?
環境が悪く、その環境に自分が身を置いてしまっているからです。
わたし達は良くも、悪くもミラーニューロンの働きによって周りの環境や情報、人間関係に強く影響されて思考が形成されています。
周りに自分の理想とする思考を持っている人が多数存在すれば理想の思考に容易に辿り着くのですが
ほとんどの人はそうではなく、足を引っ張るような考え方の人が周りにいるものです。
だから周りの環境を変えるのが思考を変えるのが1番な有効な手段と言えるのです。
しかし多くの人がいきなり全ての環境を変えることができません。切りたくても切れない人間関係ありますから
それでは普通の人は変わらないのか?というとそうではありません。
わたしからの提案として
変われるところから変わっていこうということです。
例えば
耳から聞く情報は自分にとって身になる情報を取り入れる。
娯楽に時間をなるべく使わない
理想の現実を手に入れている人の動画を毎日聞いて自己洗脳する
意外と簡単かも思われるかもしれないが
環境が180度変わるわけではないので、これまた意外と難しいんです。
しかし小さな変化こそ大切にして
最終中に大きな変化につなげていくことこそ
確実な理想の自分への一歩と言えるのです。
勝ち組投資家はフリーランチを見逃さない
勝ち組投資家が大切にする概念には
フリーランチ=アービトラージがあります。
アービトラージとは裁定機会ともいわれ、
投資の世界では稀なのですが、確実に利益を得られる機会を言います。
もちろん市場の基本構造は不確実性で満ちているので、まずそんな美味しい機会はないのですから見つけることは非常に難しいのです。
だから勝ち組投資家たちは市場を幅広く、
意地汚く貪欲にタダ飯の機会を見つけていかなくてはいけません。
そんなアービトラージはどんなところにあるのでしょうか?
基本的にはみんなが氣にしないようなところだったり、嫌がっているところ、不良債権を抱えているところなど、一見すると
リスクしかないようなところにアービトラージは眠っているのです。
ほとんどの投資家はリスクを嫌ったり、物事の本当に価値のあるものを見つけることが非常に苦手なので、もしかしたら痛手を負うかもしれないところに乗っかることはできないのですが、このハードルを乗り越えることができる数少ない投資家はフリーランチにありつけ勝ち組投資家になれるのです。
なぜ勝ち組投資家は一見するとリスクしかないようなところでも手を出しにいけるのかと言えば、市場で利益を上げることの難しさを人一倍理解していて、不確実性に満ちたマーケットではアービトラージを得る機会はほとんどないことを骨の髄まで理解しているからです。
まとめ
・フリーランチ=アービトラージ
・勝ち組投資家ほど、フリーランチに貪欲であ
る。だから幅広く、意地汚くてもフリーラン
チを取りにくる。
・マーケットは不確実性な要素が強いため、
アービトラージのような確実に儲けられる機
会はほとんどない。