carolinaのつぶやき

RubyやRails中心のアウトプットと趣味のあれこれ

【HTML】投稿できるファイル形式を制限する

  • 画像投稿機能作成時に、意図しない形式のファイルが投稿されないように制限したいと思い調べた
  • HTMLの属性で設定できるらしい
    e.g. accept="audio/*" gyazo.com
  • 上画像のようにファイル選択時の拡張子を指定してくれる。
  • ただし、あくまでユーザーをガイドしてくれているだけなので、サーバー側でも拡張子の制限を設定してあげることで意図しないファイルの投稿が防げる◎

参考

【Rails】Rails × Slim × GoogleMapsAPI でmapがうまく表示されない…

今作っているオリジナルアプリでGoogleMapsAPIを使用して地図を表示させたくて、そこそこ奮闘したのでメモ。

以前上記の記事を参考にしてAPIを使用する練習をしたことがあり、今回もお世話になった。
私の環境だとerbではなくslimを使用しているので、上記の記事のコードをslim記法にする必要があり、そこで少々はまりました。

やったこと

安直にHTMLをslimに変換してくれる ERB 2 SLIM を使用して変換したコードをコピペしたところ、地図が表示されない…(デスヨネ)
実際に出力されたコードを見たところ、CSS部分がうまく変換できておらず地図にCSSが適用されていない状態だと分かった。
元記事にも記載があったけど、どうやらこれが原因だったみたい。 

解決策

考えたのは以下。
1. CSSファイルを作成してスタイルを記述する 
2. slim記法でスタイルを記述する 

前者は試したけどうまくいかず(小声) 
今回スタイル当てたいのmapだけだし、html.slim内に書いちゃおうと決めたはいいが、slim記法でCSSをどう書いたら良いのかわからなかったのでぐぐった。 
すると css: と書き始めたらええで!といった記事を見つけた。ちなみにJavascriptを書きたいときも javascript: って書けばいいっぽい。以下のような感じ。 

css:
  #map
    width: 600px;
    height: 600px;

これでいけるだろう!と画面リロードした。 Javascriptはちゃんとscriptタグで囲まれて出力されてる。けどCSSは相変わらず適用されていない。。 
なんでやー!!と思って他記事をさらに調べたら RailsでGoogleMapを表示させる(gem 'gmaps4rails'の使い方) - Qiita という記事にたどり着いた。 

#map style="width: 800px; height: 400px;"

そして記事内にあるこの記述で書いてみたら無事CSSが適用され、地図が表示された・・・ 
めでたしめでたし。 
Image from Gyazo

反省
  • slim記法に慣れていないところに、慣れていないAPIに関するコードをぶちこんだのでWコンボくらった。
  • 変換ツールは便利だけど参考に留めて出来る限り自分で書くこと。
  • slimを使用している記事が少ないので、検索して情報を得るまでに少々手こずった。
  • なぜ出来ないかを特定する事は慣れてきたが、なぜ出来るのか(出来るようになったのか)については理解がまだまだ浅く説明できない事が多い。。今回もなぜ解決したのかもう少し掘り下げて理解を深めたい。

【Rails】rails db:createできない

mysqlrails db:create 時に毎回はまるやーつ。 忘れちゃうので残しとく。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

これが出た時はMySQLのサーバーがストップしている。。
sudo service mysql start で、サーバー起動させる。
そっから再度DB作成しようとすると、デフォのdatabase.ymlの設定がrootユーザーになっているので、現在のユーザーがrootと異なると以下のエラー文が出る。

Access denied for user 'root'@'localhost'
Couldn't create 'gallery_find_development' database. Please check your configuration.
rails aborted!

現在ログインしているユーザーに書き換えて、rails db:create 実行して解決!
※毎回PC起動時に毎回サーバーストップしてるので、自動起動設定(そんな記事を見た)したほうがいいかも。。

【Rails】bundle initできない

rails newの前にbundle initしようとしたところエラーが出てしまったので記録に残しておく。

Could not find 'bundler' (2.1.4) required by your /home/carolina/Gemfile.lock. (Gem::GemNotFoundException)
To update to the latest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:2.1.4`

bundleのバージョンが2.1.4じゃなかったのが問題ぽかった。 gem install bundler:2.1.4 実行後、 bundle -v でバージョンが2.1.4になっていることを確認して解決! その後再度bundle initしたら無事実行された。

【Rails】【備忘録】Routingを確認したい!

Routingを確認したいときにできる2つの方法

毎回忘れちゃうのでメモしておく。

  1. ターミナル上で確認する方法
    ターミナル上で rails routes を実行する。
    Image from Gyazo

  2. ブラウザで確認する方法
    (※develop環境でサーバーが起動している状態で行う)ブラウザで http://localhost:3000/rails/info/routes にアクセスする。
    Image from Gyazo

参考: Rails のルーティング - Railsガイド