自分なりのまとめです。
参考にしていただければ幸いですが、参考にして不具合等が起きた場合、保障はできませんのであしからず。
間違い等あればご教授いただけると助かります。
下準備
開発環境作成
・Railsのインストール
Windows :
1.RailsInstaller/enからセットをインスト
または、RailsInstallerから「RubyInstaller」と「DEVELOPMENT KIT」をそれぞれインスト
※下の方は手間がかかります。が、rubyのバージョンをプロジェクト毎に変えたい時などは
便利なのかもしれませんね。(環境変数変えるだけなはずなので)
2.Gitが入っていなければインスト
3.Node.jsが入っていなければインスト(恐らく)
Ubuntu :
1.Gitが入っていなければインスト
apt-get install git
2.Ubuntuには元々Rubyの1.9.3がインストされていて、今のままだと
新しいバージョンをインストしても古いRubyが動いちゃうので、
OS起動時に新しい方のRubyが使用されるように設定
…と、手順がいくつかあるのでこちらの サイト様 を参考にお願いします。
3.後々必要になるパッケージをインスト
・sqlite
yum install sqlite-devel' or 'apt-get install libsqlite3-dev
・node.js
yum install nodejs
or apt-get install nodejs
・Sublime Text3にプラグイン追加
SublimeCodeIntel : クラスやメソッドなどの入力補完をしてくれる。
Ruby学習サイト
私はRuby初心者なのでCodecademyで学習しました。
今現在70%の進み具合ですが、後は習うより慣れろだとも思うのでRailsに入っちゃいます。
シンプルなWEBアプリ作成
参考サイト様:小学生でもわかるRuby on Rails入門
Railsのベースファイルを作成
rails new sampleProject
コマンドを打った場所にsampleProjectというディレクトリが作成され、その中にベースとなるファイル群が作成されました。
ビューとコントローラの追加
コマンドから追加
cmd(私はGitBush)から下記のコマンドを打つ。
rails g controller users index show
参考サイト様と同様にusersというコントローラとindex,showというビューを作成しました。
いくつかのファイルが出来ましたね。
DL is deprecated, please use Fiddle
create app/controllers/users_controller.rb
route get "users/show"
route get "users/index"
invoke erb
create app/views/users
create app/views/users/index.html.erb
create app/views/users/show.html.erb
invoke test_unit
create test/controllers/users_controller_test.rb
invoke helper
create app/helpers/users_helper.rb
invoke test_unit
create test/helpers/users_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/users.js.coffee
invoke scss
create app/assets/stylesheets/users.css.scss
※ここで以下のエラーが発生(2015/7/27 追記)
Sorry, you can't use byebug without Readline. To solve this, you need to
rebuild Ruby with Readline support. If using Ubuntu, try `sudo apt-get
install libreadline-dev` and then reinstall your Ruby.
Gemファイルに以下の一行を追記して bundle install
でおk。
gem 'rb-readline'
参考サイト:CentOSにruby on railsをインストールする
作成したページを確認
ページが出来ているかどうかを確認する為に、下記のコマンドでサーバーを立ち上げる。
rails server
rails sでも可。この状態でウェブブラウザから http://0.0.0.0:3000/users/index
にアクセス!
Windows:
繋がりませんでした。cmdじゃエラーは吐かれてない。
ここのサイト様で原因?が見つかりました!
ipconfig
と打って、ローカルエリア接続セクションのIP Address・・・が無かったので、ネットワーク接続のIPv4アドレスを使って、ここの部分を書き換えてアクセス!
http://ここ:3000/users/index
無事繋がりました^^
というかhttp://localhost:3000/users/index
でいけました。
Ubuntu:
何の問題もなく繋がりました。
データベース(SQLite)
DBの作成
下記コマンドを打ち込むだけ。
rake db:create
テーブルの作成
rails g model [テーブル名] [フィールド名:型]
rails g model user name:string username:string location:string about:text
※ id:INTEGER,create_at:DATETIME,update_at:DATETIME は自動で作成されます。
db/migrate の下を確認すると、先ほどのコマンドで生成されたテーブル作成のSQLファイルがあります。それを下記のコマンドで実行。
rake db:migrate
※この時に、フィールドの修正をしたくなったら、生成されたファイルを修正し、
rake db:migrate:reset
で始めから作成しなおしできます。オプションでファイルの指定もできるそうです。
参考:rake db:migrate
初期データの反映
変数 = モデル名.new
変数.フィールド名 = "データ"
変数.save
の形で初期データをセットするseeds.rbに記述。
@user = User.new
@user.name = 'Ryo Suzuki'
@user.username = 'ryooopan'
@user.location = 'Kanagawa, Japan'
@user.about = 'Hello, I am Ryo. I am from database!'
@user.save
@user = User.new
@user.name = 'Shohei Aoki'
@user.username = 'moyahima'
@user.location = 'Tottori, Japan'
@user.about = 'Nice to meet you. I am from database!'
@user.save
コマンドで実行
rake db:seed
※何度も流すと同じデータがどんどん作成されるから注意!
データの受け渡し
ControllerからView
class UsersController < ApplicationController
def index
# 追記ここから---▽
@user = Hash.new
@user[:name] = "Sato Taro"
# 追記ここまで---△
end
def show
end
end
<h1><%= @user[:name] %></h1>
URLパラメータからController
SampleProject::Application.routes.draw do
get "users/index"
# 追記ここから---▽
get "users/show/:username" => "users#show"
# 追記ここまで---△
end
class UsersController < ApplicationController
def index
@user = Hash.new
@user[:name] = "Sato Taro"
end
def show
# 追記ここから---▽
@user = Hash.new
@user[:name] = params[:username]
# 追記ここまで---△
end
end
URLのパラメータはroutes.rbでシンボル名と遷移先を指定しておけば、
コントローラ側でparamsから値を取得できる。
DBからデータを取得
検索条件がある場合はfind_byを使ってデータ取得。
単純にIDのみの検索の場合はUser.find(1)でOK.
# Userの中でusernameが"ryooopan"のデータ
@user = User.find_by(:username => 'ryooopan')
データの登録
登録画面の作成
<%= form_for Tweet.new do |f| %> # Form開始タグ
# f.タグ種類 : タグ名称
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.label :content %>
<%= f.text_area :content %>
<%= f.submit %>
<% end %> # Form終了タグ
get "tweets/index"
get "tweets/show"
get "tweets/new"
post "tweets" => "tweets#create" # 追記
class TweetsController < ApplicationController
…
def create
# 保存処理
@tweet = Tweet.new
@tweet.title = params[:tweet][:title]
@tweet.content = params[:tweet][:content]
@tweet.save
# 一覧画面に遷移
redirect_to '/tweets/index'
end
end
保存処理の書き方はdb/seed.rbと同じですね。
その他(個人的なメモ程度なものです)
リダイレクト
controller内の場合
redirect_to '/tweets/index'
レンダリング
controller内の場合(同一コントローラのindexを読む場合)
render :index
controller内の場合(テキスト表示をさせたい場合)
render :text => 'Hello!!'
view内の場合(読ませるファイルの名前の先頭にはアンダーバーを付けること)
<%= render xxx_form %>
Vagrantを使っている方へ注意点
ホストPCとの共有フォルダ上で開発する場合、bundle install
はインストール先を共有フォルダ外に指定する必要がある場合があります。
通常のbundle install
でgemのインストールがきちんとできない場合はbundle install --path /usr/local/src/hoge
とすることをお勧めします。