この記事は筆者が学びながらアウトプットして書いています。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のログを参照する
- ipアドレスを確認後 ipアドレス:3000 でアクセス(サーバーが立ち上がっていることを確認)
データベース関係
rails g model テーブル名 カラム名:データ型 #テーブルの作成 rails db:migrate #データベースの反映 rails dbconsole #データベースの確認(sqliteが立ち上がる。quitで終了) rails console #railsのconsole テーブル名.create #テーブルのインスタンス作成とsaveを同時に行う rails db:migrate:reset #データベースを削除してまた新しい状態で作り直す
- アプリケーション名/db/seeds.rb に直接Rubyを書き込むことでテーブルの初期データを作成できる
$ rails db:seed でseeds.rbの内容を反映させる
モデル関係
モデルで使うメソッド
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.data: {confirm: “メッセージ”}をlink_to()ヘルパーのオプションで指定する
<%= link_to("削除する", post_path(post), method: :delete, class: :command, data: {confirm: "本当に削除しますか?"})%>
CSS関係
- Q.flash[:notice]のcssはどうやって設定すればいい?
- A.flash[:notice]に直接cssを指定することできない
flash[:notice]にスタイルを付けたい場合はflash[:notice]をdivタグで囲いdivタグにスタイルをつける。
その他よくあるトラブル
- Q.textareaタグのvalue属性が表示されないんですがどうしたらいいですか!
- A.textareaにvalue属性はありません。
<textarea><%= hoge %></textarea> <!--このように書きます-->
- Q.form_tag()ヘルパーでルーティングのURLを指定しているのにエラーがでる。
- A.form_tag()ヘルパーでmethodを指定します。
ドットインストールのrails入門ではルーティングの設定を resouces というもので一気に作成します。form送信もform_tag()ではなくform_for()などを使います。(Progateと内容がすこし違うので少し混乱する)
エラーがでてもよくわからないときは、ブラウザでページのソースを確認することと、Railsドキュメントを参照してみるとエラーの解決につながりやすいと思います。
- Q.link_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とする
これだけの間違いでなんでエラーになっているのかわからず悩み続けることになる
とりあえずターミナルで spring stop とうってみる
Railsのログ
ログの確認方法
Railsのログはアプリケーション別に記録されるしくみみたい。場所は /log/development.log にある。ログはいろいろやっていると膨大な量になっているので、スクロールしないと一番最新のログがみれなくなる。それがいやな場合はログをクリアことができる。
ログの削除方法
ログを削除するにはコマンドで行う
rake log:clear
その他知っておくとよいこと
gemの確認はgem listで行う
gem list
gemfileをいじったらサーバーを再起動する
gemfileをいじったらってそのまま作業をすすめるとエラーにでくわすことがある。そのときは一旦サーバーを再起動する。その他にはひょっとすると画像を追加したときも同じことがいえるかもしれない
GUIでデータベースを確認する
仮想マシンからデータベースファイルをダウンロードしDBBrowserforSQLiteで開く。(もっといい方法があるかもしれない)
SQLiteのDBブラウザ
データベースファイルの場所: db/development.sqlite3(これはrailsアプリのパスです)
役に立つかもしれない記事
Railsコマンドをうつのがめんどくさいときはエイアリアスが便利です。↓
Railsコマンドのaliasを設定する方法を誰にでもわかるように書く | 初心者のプログラミング
ドットインストールのRails入門で躓いた場所を書いています。↓
ドットインストールのRubyOnRails入門で躓く場所 | 初心者のプログラミング