2020-02-01から1ヶ月間の記事一覧

ちょと復習

if (document.location.href.match(/\/groups\/\d+\/messages/)) { setInterval(reloadMessages, 7000); } .location.href現在のページのurlを取得してmatchメソッドを使い(引数には正規表現を使う)、特定のページ(正規表現にマッチするページ)でだけ7…

カスタムデータ属性ちょっと復習

htmlにカスタムデータ属性を設定を指定しておくとJavaScriptで値を取得できる。 属性名をdata-で始まる名称にすることで設定できる。値入れるのには=を使う data-任意の名前 = 任意の値 jQueryだと取得したDOMにdataメソッドを利用することでデータを取得で…

インクリメンタルサーチちょっと復習

1.データ受け渡しの準備 ①ルーテイングを作る。今回は割愛。 ②コントローラーで def index respond_to do |format| format.html format.json end end ちなみにhtmlやjsonの後ろに{}内で処理を書いてあげると別のページに飛んでもらったりできるが、特に何も…

ajaxちょっと復習

1Jsファイル内 フォームタグのid名を取得して送信ボタンが押されたらデフォルトのhtmlレスポンスになるのを防いでおく $('フォームタグのid名').on('submit', function(e){ e.preventDefault() }); 自分はrailsで使うことが多いだろうから追記しておくけど…

jsjqちょっと復習中

Eachfor文のvalueとindexの説明ここが分かり易い https://www.wareko.jp/blog/various-ways-to-process-array-for-each-loop-in-javascript $(".content").removeClass("show").eq(index).addClass("show"); 全てのコンテントクラスの内最初のshowクラスを削…

turbolinksうざ

js, jqueryがリロードしないと正常に読み込まれないの何でだろうと思っていたが、turbolinksのせいだったのでapplication.jsのrequire部分消した。

carrierwaveのカラム名 独り言 

今まで一つのテーブルにしか画像保存してこなかったのであんまりこういうこと起きなかったけど、imageとbestimageみたいな感じでカラム名を変えて別テーブルに保存してたら片方文字列になったので統一した方がいいのかも? ちなみに先に作ったのがimageであ…

今さらだがparamsとルーティングとコントローラー ※大事

データの受け渡し方(paramsの使い方と考えてもいいかも)は大別すると link_toによる受け渡し formメソッドによる受け渡し に分けられる。 formに関して前にも書いた気がするので今回はlink_toについて考えを整理する。 1 <%=link_to "リンク先(ただの文字)"…

rails new はきちんとバージョン指定

gemの挙動だけ確認したくて久しぶりにrails newしたら生成まではいくが、rails sやrails db:migrateの段階でエラーを吐いて先に進めなくなったので何が原因かと思って調べると、バージョン指定していないことが原因だった。 この記事が参考になった https://…

heroku logsもいいんだけど

原因が特定出来なかった時はheroku run rails c でわかる時もある

ストロングパラメータの書き方。というより外部キーもちのテーブルのformの書き方。

なんかハマったのでメモ そもそもユーザーモデルがあって、user has many picturesでpicture belongs to user な関係のテーブルを作る時にうまくcarrierwaveのでアップロードした画像のパスがDBに保存できなかった時の話。 <%= form_for(@picture, url: {con…

ちょっと実験する時

<%= link_to 'linktext', :controller=> 'controller_name', :action=> 'action' %> 実験ページでデータが表示されるかとかjs動くかとか様子見てた時にそのページのリンクのprefixが普通のページと被った時に、どうやって跳ぼうかと思ったが、単純にコントロ…

herokuでまたハマる

ローカルのマイグレーションいじったので一旦db:resetしてからなかなかうまく起動しなかったので、メモっとく。 どこでそうなったのか知らんがgem 'pg' の記述が重複していたのでそれをproductionのみにしたが、それが関係あるかは謎。 原因は恐らくトップペ…

Rails DBに対する命令文3

別に命令文という感じもないのだが注意点 前回の続き。前回も軽く触れたが、マイグレーションファイルを直接いじれるのは一度でもmigrateする前まで。それ以降は処理済み扱いとなり。反映されない。 https://teratail.com/questions/103227 またrollbackで何…

DB設計

参照先が分かり易い https://qiita.com/nishina555/items/a79ece1b54faf7240fac

Rails DBに対する命令文2 ※重要

前回の続き。結局のところ今の段階ではrailsのコマンドしっかりしとけって話だったので、こっちにDB操作系のコマンドまとめとく。一番下の参考元読むのが一番いいけど、自分に取って今大事なところは以下。 基本的なテーブル作成の手順 (0. デフォルトのSQL…

DBに対する命令文1

トランザクションやDCLは大事そうな気がするし、いずれはデータベースの操作はSQL 文でも出来ないとダメだろうから、いつか必要になるとは思うが、現時点ではrailsではどういうコマンドがこれに当たるのかを把握する方が優先。 なので、分類して考えていよう…

target = "_blank"の脆弱性

外窓で開く時にtarget = "_blank"の脆弱性をつかれることがあるので rel = "noopener" を a タグに追加しておくこと

属性の更新

属性の更新をしたい時は注意 チュートリアルの6.3.2で before_save {self.email = email.downcase}としたり 9.3で self.remember_token = User.new_token とわざわざself使ってるのは、単に emailとしたりremember_tokenとしたりするとそれがローカル変数の…

update_attribute

update_attributesは検証に失敗したら呼び出されないのに update_attributeは検証回避の効果がある なんか不思議

仮想的な属性

この説明がわかり易かったかな https://ruby-rails.hatenadiary.com/entry/20141229/1419856433 DBに直接反映はさせたくないけどフォームとかでは使いたい、みたいな時にモデルに定義するっていうのが主な用途かな

ダイジェスト digest 割と大事

本当に簡単に説明してくれてるんだろうけど、このサイトの説明がわかり易かった https://techacademy.jp/magazine/21231 要はハッシュや16進数として暗号化して出力ためのメソッドで、暗号化されたものから元の内容は推測出来ないようになってるってのがdi…

or equal

@foo =>nil >>@foo = @foo || "bar" => "bar" >> @foo = @foo || "baz" => "bar" Rubyは||式を左から右に評価し、演算子の左の値が最初にtrueになった時点で処理を終了するという短絡評価をするので、nilやfalseは飛ばして"bar"が代入されるし、@fooに値が入…

sessionメソッド

railsには事前定義済みのsessionメソッドがあり、ハッシュのような扱い方ができるので session[:user_id] = user.id チュートリアルの抜粋 上のコードを実行すると、ユーザーのブラウザ内の一時cookiesに暗号化済みのユーザーIDが自動で作成されます。この後…

flash

flash.now[:danger]='エラーメッセージの内容' flash.nowならレンダリングが終わったページにフラッシュを表示できる上にリクエスト発生時に消えるのでエラーメッセージ表示時に便利。 webアプリケーションに常識的に備わってる機能としてページにメッセージ…

フォーム作成時の理解で大事なところ

railsチュートリアルからかいつまんで抜粋 <%= form_for(@user) do |f| %> . . . <% end %> が<form></form>にあたることをまず抑えとく もう少し詳しく見ると、例えば <form action="/users" class="new_user" id="new_user" method="post"> ここで大事なのはactionとmethod classとid属性はアーキテクチャとしては基本的に無関係 actionとmet</form>…

byebug

pry-byebugをインストールしてbiding.pryしてもいいんだけど、デフォルトのbyebugもシンプルでいいなと思った。 コントローラーのとめたいところでdebuggerと記述するだけでターミナルにコンソールが立ち上がるので、@user.nameとかparams[:id]とかで中身を…

SQLって

rails使ってたらほとんど触らなくて済むんだよね。 チュートリアルから抜粋 この辺はなんとなくでも分かっといた方がいいかも マイグレーション自体は、データベースに与える変更を定義したchangeメソッドの集まりです。リスト 6.2の場合、changeメソッドはc…

モジュール

まだモジュールまともに使ってないなぁ、早く使いたいなぁと思った lib以下になんか書いた記憶がない ビューで使うメソッドはhelpers以下に書くし モジュールはインスタンス持てないし、継承も出来ないし。 いつ使うの?と思ってちょっと調べたけど、とりあ…

putsのやつ

applicaiton_helper.rbに色々定義してビューファイルで呼び出して遊んでたんだけど、最初に定義したputs "hello, world"は出力されなかった。putsは帰り値がnilだからか? return "hello, world"なら返ってきた。 今回は大したことなかったけどこのへんの癖…