Railsで詰まったところ
開発環境は、Windows 7 Professional(32bit) + ruby 2.3.3p222 + Rails 4.2.1。
■コマンドプロンプト(Railsのコンソール)からテーブルの現在のカラムを調べる
・今回はusersテーブルの中身を調べる
まず、コンソールを起動します。
rails c
User.columns
このままでは色んな情報が出るので、見やすくするために、以下のようにする。
User.columns.map(&:name)
他にも、よく使うコマンドとして、
User.count # usersテーブルの行数を取得します
User.find(1) # usersテーブルでidカラムが1のデータを取得します
Rails.env # 現在の環境がdevelopment,test,productionのいずれなのかを知る
などがあります。
参考リンク
rails c でカラムの確認
■whereメソッドで検索して特定のカラムだけ取得したい場合
itemsテーブルからwhereメソッドでurlカラムにhrnabi.com/が含まれているレコードを抽出して、そのカラムのidだけを一覧として表示したい場合、以下のようにします。
Item.where("url LIKE '%hrnabi.com/%'").map(&:id)
■マイグレーションスクリプトからテーブルにカラムを追加する
・例えば、usersテーブルにpassword_digestという文字列型のカラムを追加する場合、以下のコマンドを入力する。
rails g migration AddColumnToUsers
db/migrateディレクトリ内に日付_add_column_to_users.rbというファイルが生成されているので、その中のchangeメソッド内に以下のコードを入れる。
add_column :users, :password_digest, :string
そして、マイグレーションする。
rake db:migrate
参考リンク
Ruby on Rails カラムの追加と削除
rails generate migrationコマンドまとめ
Boolean型のカラムを追加するときは必ずデフォルト値を設定しよう
■コントローラ側でフォームからの値を受け取る方法
# name属性がqの値を受け取ります keyword = params[:q]
■ビューにてフォームを作る
簡単なテキストボックスと送信ボタンのフォームを作ります。
ソースを見てみると、UTF-8エンコーディングされる隠しinputタグとCSRF対策のトークンの各誌inputタグが自動的に作成されます。これがないと、送信が成功しないようです。
<%= form_tag("/post", method: "post") do %> <%= text_field_tag(:q) %> <%= submit_tag("送信") %> <% end %>
実行結果
参考リンク
Railsのフォーム基本的な作成方法まとめ(form_forとかform_tag)
Action View フォームヘルパー | Rails ガイド
フォーム(form) - - Railsドキュメント
■ビューで画像を表示させる
基本的に、app/assets/imagesディレクトリ内に画像を入れた場合と、publicディレクトリ内に画像を入れた場合の2パターンがあるようだ。
# app/assets/imagesディレクトリに画像を入れた場合 <%= image_tag 'test.jpg' %> # publicディレクトリに画像を入れた場合 <%= image_tag 'test.jpg' %> # publicディレクトリ内にディレクトリを作成(今回はuploads)し、 # そこに画像を入れた場合 <%= image_tag '/uploads/test.jpg' %>