読者です 読者をやめる 読者になる 読者になる

Ruby (on Rails)入門 ~現在、勉強中(2015年6月開始)~

Ruby、Ruby on Railsを勉強中。参考書を読んだり、ネット情報を読むだけでは忘れてしまうのでメモする。

【Ruby (on Rails)プログラミング入門メモ#103】メールアドレスとパスワードを使ったログイン機能を作るサンプル ~①ユーザー登録~

Ruby Ruby (on Rails)プログラミング入門 Ruby on Rails サンプル プログラミング 入門

この記事を読んでわかること

  • メールアドレスとパスワードを使ったログイン機能の作成方法の一部(ユーザー登録)

試す前に

railsでアプリを作っておくこと

1. bcryptインストール

gemでbcryptをインストールします。

Gemfileを開きます。
bcryptに関する行はコメントアウトされているので、 コメントアウトを削除します。

bcryptに関する行がなければ、下記追記します。

# Use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1.7'

2. Userモデル作成

①モデル作成
rails g scaffold User email:string password_digest:string
マイグレーション
rake db:migrate
③バリデーションを追加&認証用の設定

user.rbを開き、下記のとおりに編集します。

class User < ActiveRecord::Base
  validates :email, presence: true, uniqueness: true # バリデーション
  has_secure_password # 認証用の設定
end

3. Viewの修正

新規作成、更新時のフォームを修正します。

修正で下記のことをしています。 - パスワード入力欄の修正 - パスワード(確認)入力欄の追加

<%= form_for(@user) do |f| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

      <ul>
      <% @user.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :email %><br>
    <%= f.text_field :email %>
  </div>
  <div class="field">
    <%= f.label :password, 'パスワード' %><br>
    <%= f.password_field :password %>
  </div>
  <div class="field">
    <%= f.label :password_confirmation, 'パスワード(確認)' %><br>
    <%= f.password_field :password_confirmation %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

4. Controllerの修正

新規登録、更新時にcreateアクション及びupdateアクションに
送られてくるパラメータで、許可するパラメータを変更します。

users_controller.rbを開き、 デフォルトで作成されているuser_paramsメソッドを下記のとおりに修正します。

def user_params
  params.require(:user).permit(:email, :password)
end

5. 確認

アプリを起動し、新規ユーザー登録をしてみます。 f:id:fjswkun:20160420143258p:plain

f:id:fjswkun:20160420143309p:plain

終わりに

次はログイン画面を作る

勉強で使用中書籍

・他のプログラミング言語を使える人向け。[現在使用中] プログラミング初心者には向かない。

・たのしいRubyを読み終えたら勉強するつもり

初めてのRuby

初めてのRuby

Railsを勉強するなら、まずはこれがいいらしい

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

【Ruby (on Rails)プログラミング入門メモ#102】confirmオプションでアラートが表示されない

Ruby Ruby (on Rails)プログラミング入門 Ruby on Rails サンプル 入門 プログラミング Rubyの基本文法

問題

↓の書籍で勉強していた。

RailsによるアジャイルWebアプリケーション開発 第4版

ボタンを押した時にアラートを表示したいが、
書籍に記載のソースでは表示されない。

<%= button_to 'カートを空にしますか?', @cart, method: :delete, confirm: '本当に良いですか?' %>

調べたところ、Rails 4.1からconfirmオプションが廃止されたようだ。

解決方法

では、どうやってアラートを表示するか?
dataオプションに入れてあげると表示される。

<%= button_to 'カートを空にしますか?', @cart, method: :delete, data:{confirm: '本当に良いですか?'} %>

f:id:fjswkun:20160409134912p:plain

勉強で使用中書籍

・他のプログラミング言語を使える人向け。[現在使用中] プログラミング初心者には向かない。

・たのしいRubyを読み終えたら勉強するつもり

初めてのRuby

初めてのRuby

Railsを勉強するなら、まずはこれがいいらしい

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

【Ruby (on Rails)プログラミング入門メモ#101】form_forメソッドの中で複数のモデルを扱う方法

Ruby Ruby (on Rails)プログラミング入門 Ruby on Rails サンプル 入門

この記事を読んでわかること

方法

fields_forメソッドを使う。

下記、boardモデルとcommentモデルがある場合のサンプル。
boardモデルとcommentモデルは1対多の関係。

<%= form_for(@board) do |f| %>
  <div class="field">
    <%= f.label :theme, 'テーマ' %><br>
    <%= f.text_field :theme, placeholder: "テーマを入力してください" %>
  </div>
  <div class="field">
    <%= fields_for(@comment) do |c| %>
      <%= c.label :message, '本文'  %>
      <%= c.text_field :message, placeholder: "本文を入力してください" %>
    <% end %>
  </div>
<% end %>

勉強で使用中書籍

・他のプログラミング言語を使える人向け。[現在使用中] プログラミング初心者には向かない。

・たのしいRubyを読み終えたら勉強するつもり

初めてのRuby

初めてのRuby

Railsを勉強するなら、まずはこれがいいらしい

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

【Ruby (on Rails)プログラミング入門メモ#100】railsの基本的なルート設定

Ruby Ruby (on Rails)プログラミング入門 Ruby on Rails プログラミング サンプル 入門

この記事を読んでわかること

  • 基本的なルート設定方法

railsはroutes.rbファイルにルート設定を書く。

resourcesメソッド

下記アクションが生成される。

  • index
  • show
  • new
  • create
  • edit
  • update
  • destroy
resources :categories

resourceメソッド

indexアクションが生成されない。
また、show、edit、deleteでidパラメータが必要ない。

resource :categories

ルート定義の確認

Webサーバーを起動し、下記URLにアクセスする。

http://localhost:3000/rails/info/routes

f:id:fjswkun:20160321151814p:plain

デフォルトで生成されるアクションの無効化

destroyアクション以外を生成する

resources :categories, except: [:destroy]

f:id:fjswkun:20160321154557p:plain

指定したアクションのみ生成する

indexアクションのみ生成する

resources :categories, only: [:index]

f:id:fjswkun:20160321154510p:plain

掲示板アプリ作成

【Ruby (on Rails)プログラミング入門メモ】掲示板アプリ作成(001 アプリケーション作成) - Ruby (on Rails)入門 ~現在、勉強中(2015年6月開始)~

勉強で使用中書籍

・他のプログラミング言語を使える人向け。[現在使用中] プログラミング初心者には向かない。

・たのしいRubyを読み終えたら勉強するつもり

初めてのRuby

初めてのRuby

Railsを勉強するなら、まずはこれがいいらしい

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

【Ruby (on Rails)プログラミング入門メモ】掲示板アプリ作成(002 アプリケーション作成)

Ruby Ruby (on Rails)プログラミング入門 Ruby on Rails サンプル 入門 掲示板

この記事を読んでわかること

  • scaffoldを使用して、モデルとその管理機能を作成する方法

今後作ろうと思う機能

  • 新規スレッド作成する
  • スレッドにコメントする
  • スレッドを一覧を表示する
  • スレッドの詳細を表示する
  • カテゴリを管理する

カテゴリ

スレッドをカテゴリ分けできるようにしたい。
管理者がカテゴリの作成、更新、削除ができるカテゴリ管理機能を作成します。
これはrailsのScaffoldを使うことで簡単に作成できます。

カテゴリの作成手順

1. 作成

カテゴリはデータに「id」「名前」「作成日時」「更新日時」を持つようにします。
「名前」以外はrailsで自動的に追加してくれますので、
カテゴリ作成時に「名前」の追加だけを指定してあげればいい。

下記コマンドをターミナルで実行します。
その前に、もし、Webサーバーが起動中であれば、「Ctrl + C」を押して停止します。

rails generate scaffold category name:string

f:id:fjswkun:20160321121126p:plain

2. DB作成

下記コマンドをターミナルで実行します。

rake db:migrate

f:id:fjswkun:20160321121618p:plain

3. 確認

上記の手順1と手順2でカテゴリの
「一覧」「新規作成」「更新」「詳細」「削除」機能を作成できます。

ここではその確認をします。

まずはWebサーバーを起動しておきます。

①「一覧」の確認

ブラウザで下記URLにアクセスします。 http://localhost:3000/categories

f:id:fjswkun:20160321121908p:plain

②「新規作成」の確認

一覧画面にある「New Category」のリンクをクリックします。
f:id:fjswkun:20160321122021p:plain

カテゴリ名に「ゲーム」と入力し、Create Categoryボタンをクリックします。
f:id:fjswkun:20160321122224p:plain

③「更新」の確認

「Edit」のリンクをクリックします。
f:id:fjswkun:20160321122338p:plain

カテゴリ名に「アニメ」と入力し、Update Categoryボタンをクリックします。 f:id:fjswkun:20160321122523p:plain

④「詳細」の確認

「Back」のリンクをクリックすると一覧に戻ります。
「Show」のリンクをクリックします。
f:id:fjswkun:20160321122659p:plain

⑤「削除」の確認

「Back」のリンクをクリックすると一覧に戻ります。
「Destroy」のリンクをクリックします。

f:id:fjswkun:20160321122750p:plain

OKボタンをクリックすると削除が実行されます。
f:id:fjswkun:20160321122814p:plain

おわりに

次は新規スレッドを作成しよう。

掲示板アプリ作成

【Ruby (on Rails)プログラミング入門メモ】掲示板アプリ作成(001 アプリケーション作成) - Ruby (on Rails)入門 ~現在、勉強中(2015年6月開始)~

勉強で使用中書籍

・他のプログラミング言語を使える人向け。[現在使用中] プログラミング初心者には向かない。

・たのしいRubyを読み終えたら勉強するつもり

初めてのRuby

初めてのRuby

Railsを勉強するなら、まずはこれがいいらしい

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

【Ruby (on Rails)プログラミング入門メモ】掲示板アプリ作成(001 アプリケーション作成)

Ruby Ruby (on Rails)プログラミング入門 入門 掲示板 サンプル

この記事を読んでわかること

勉強したことをもとに簡単な掲示板アプリケーションを作ります。
まだ勉強が少ないので、アプリケーションを作りつつ、
いろんなテーマに行ったり来たりすると思います。

アプリ作成

1. アプリケーション作成

ターミナルでアプリケーションを保存するフォルダに移動し、
下記コマンドを実行します。

rails new bulletinboard

少し時間が掛かります。
処理が流れるのが止まったら終わりです。 f:id:fjswkun:20160320134953p:plain

2. アプリケーション作成確認

①作成したアプリケーションのフォルダに移動する

cd bulletinboard

②webサーバーを起動する

rails server

③ブラウザを起動し下記URLにアクセスする http://localhost:3000

下記の画面が表示されれば、アプリケーションの作成成功です。
f:id:fjswkun:20160320135449p:plain

おわりに

次回に続く。

勉強で使用中書籍

・他のプログラミング言語を使える人向け。[現在使用中] プログラミング初心者には向かない。

・たのしいRubyを読み終えたら勉強するつもり

初めてのRuby

初めてのRuby

Railsを勉強するなら、まずはこれがいいらしい

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

【Ruby (on Rails)プログラミング入門メモ#?】文字列の検索

Ruby Ruby (on Rails)プログラミング入門 Ruby on Rails Rubyの基本文法 プログラミング 入門

ある文字列の中に特定の文字列が含まれているかを 検索する場合、下記3つのメソッドを使う。

・indexメソッド 検索対象の文字列を左から検索

・rndexメソッド 検索対象の文字列を右から検索

・include?メソッド 検索文字列が含まれているか、含まれていないかを調べる

str = "オレンジジュース。グレープフルーツジュース"
p str.index("ジュース")     # 5
p str.rindex("ジュース")    # 17 文字列右から調べているので、indexとは結果が異なる
p str.include?("ジュース") # true

勉強で使用中書籍

・他のプログラミング言語を使える人向け。[現在使用中] プログラミング初心者には向かない。

・たのしいRubyを読み終えたら勉強するつもり

初めてのRuby

初めてのRuby

Railsを勉強するなら、まずはこれがいいらしい

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版