はじめに。
この記事は筆者が学びながらアウトプットして書いています。Railsのことはまだあまりわかっていないのですが、railsの概要をつかむにはプログラミング学習サービスのProgateで学習するのが個人的にはおすすめです。
ドットインストールでも無料で動画はみられるのですが、概要についてはあまり詳しく解説はされていないので、Progateで最初に学んでからドットインストールという順番がよいかとは思いますが、そこは人によるのであまり参考にならないかもしれません。
この記事はRailsの概要はちょっとつかめた感じというのが前提で、基本操作を主に書いています。
Railsの開発環境
開発環境はドットインストールの動画をみて構築。
- Windows10
- VirtualBox -v 5.2.2 仮想マシンを構築するために必要
- Vagrant -v 2.2.0 仮想マシンを起動、停止したりするために必要
- putty 立ち上がった仮想マシンにログインするために必要
- Cyberduck 仮想マシンのファイルやディレクトリをGUIで表示する
Railsの操作方法
以下にRailsの操作方法を項目別に記載する。railsコマンドなどは仮想マシンがたちあがっている状態でかつ仮想マシンにログインしている状態で行います。(puttyで行う)。ドットインストールの開発環境構築をみれば、仮想マシンにインストールする作業もスクリプトで自動で行うので、何もトラブルがなければ数時間で開発環境構築ができます。
基本操作
rails new xxx #アプリケーションの作成
rails server -b ipアドレス -d #railsのサーバーを立ち上げる
ip a #ipアドレスを調べる
cat tmp/pids/server.pid #railsサーバーのプロセスを終了するための番号を調べる
kill -9 プロセス終了番号 #railsのサーバーを終了する
tail log/development.log #railsのログを参照する
データベース関係
rails g model テーブル名 カラム名:データ型 #テーブルの作成
rails db:migrate #データベースの反映
rails dbconsole #データベースの確認(sqliteが立ち上がる。quitで終了)
rails console #railsのconsole
テーブル名.create #テーブルのインスタンス作成とsaveを同時に行う
rails db:migrate:reset #データベースを削除してまた新しい状態で作り直す
モデル関係
モデルで使うメソッド
find() | 指定したidのオブジェクトを返すfind(1) |
---|---|
find_by() | find_by(カラム名:)で指定したカラム名のオブジェクトを返す |
first | データベースの最初のオブジェクトを返す |
all | データベースの全てのオブジェクトを返す |
save | 作成したモデルオブジェクトをデータベースに反映させる |
create | モデルオブジェトの作成からデータベースの反映までを一気に行う |
ルーティング関係
rails routes #ルーティングの確認
- resources :posts(postsはコントローラー名)
ルーティングに記述すると、よく使いそうなルーティングが一気に設定される - root “コントローラー名#アクション名” → ルートパスが設定される。
- rootのurlを指定 → root_path
コントローラー関係
rails g controller コントローラー名(複数形) #コントローラーの作成
そのほかビュー関係
画像リンクを作成する | <%= link_to(image_tag(“src”), url)%> |
---|---|
link_toヘルパーにクラスをつける | <%= link_to(“リンク名”, “url”, class: “”)%> |
- Qテキストが改行されないのですが
- A
simple_fomatを追加しましょう
simple_formatは改行を適切なタグに変換してくれる
<p><%= simple_format @post.body%></p>
ヘルパー関係
link_to() | リンクを作成する |
---|---|
image_tag() | 画像リンクの作成 |
form_tag() | フォームの送信 |
- Q確認メッセージを表示させたいです
- A
A.data: {confirm: “メッセージ”}をlink_to()ヘルパーのオプションで指定する
<%= link_to("削除する", post_path(post), method: :delete, class: :command, data: {confirm: "本当に削除しますか?"})%>
CSS関係
- Qflash[:notice]のcssはどうやって設定すればいい?
- A
A.flash[:notice]に直接cssを指定することできない
flash[:notice]にスタイルを付けたい場合はflash[:notice]をdivタグで囲いdivタグにスタイルをつける。
その他よくあるトラブル
- Qtextareaタグのvalue属性が表示されないんですがどうしたらいいですか!
- A
textareaにvalue属性はありません。
以下のように書きます。
<textarea><%= hoge %></textarea>
- Qform_tag()ヘルパーでルーティングのURLを指定しているのにエラーがでる。
- A
A.form_tag()ヘルパーでmethodを指定します。
ドットインストールのrails入門ではルーティングの設定を resouces というもので一気に作成します。form送信もform_tag()ではなくform_for()などを使います。(Progateと内容がすこし違うので少し混乱する) エラーがでてもよくわからないときは、ブラウザでページのソースを確認することと、Railsドキュメントを参照してみるとエラーの解決につながりやすいと思います。
- Qlink_to()ヘルパーでなみかっこを使うとエラーがでます
- A
リファレンスを確認。なみかっこを使う場合はオプション全体をなみかっこで囲う
いろいろな書き方ができます↓
<%= link_to("削除する", post_path(post), {method: "delete", class: "command"})%>
<%= link_to("削除する", post_path(post), {method: :delete, class: :command})%>
<%= link_to("削除する", post_path(post), method: :delete, class: :command)%>
:をつける場所が違う。ありがちなことに:をつける場所を間違えるというのがある。たとえば
validates: userは間違い。
validates :userとする
これだけの間違いでなんでエラーになっているのかわからず悩み続けることになる
railsコマンドが急に使えなくなった
とりあえずターミナルで spring stop とうってみる
Railsのログ
ログの確認方法
Railsのログはアプリケーション別に記録されるしくみみたい。場所は /log/development.log にある。ログはいろいろやっていると膨大な量になっているので、スクロールしないと一番最新のログがみれなくなる。それがいやな場合はログをクリアことができる。
ログの削除方法
ログを削除するにはコマンドで行う
rake log:clear
その他知っておくとよいこと
gemの確認はgem listで行う
gemfileをいじったらサーバーを再起動する
gemfileをいじったらってそのまま作業をすすめるとエラーにでくわすことがある。そのときは一旦サーバーを再起動する。その他にはひょっとすると画像を追加したときも同じことがいえるかもしれない
GUIでデータベースを確認する
仮想マシンからデータベースファイルをダウンロードしDBBrowserforSQLiteで開く。(もっといい方法があるかもしれない)
SQLiteのDBブラウザ
データベースファイルの場所: db/development.sqlite3(これはrailsアプリのパスです)
役に立つかもしれない記事
Railsコマンドをうつのがめんどくさいときはエイアリアスが便利です。↓
Railsコマンドのaliasを設定する方法を誰にでもわかるように書く | 初心者のプログラミング
ドットインストールのRails入門で躓いた場所を書いています。↓
ドットインストールのRubyOnRails入門で躓く場所 | 初心者のプログラミング
コメント