Railsで詰まったところ

開発環境は、Windows 7 Professional(32bit) + ruby 2.3.3p222 + Rails 4.2.1。


コマンドプロンプト(Railsのコンソール)からテーブルの現在のカラムを調べる
・今回はusersテーブルの中身を調べる

まず、コンソールを起動します。

rails c
User.columns

f:id:k01ken:20180609133628p:plain
このままでは色んな情報が出るので、見やすくするために、以下のようにする。

User.columns.map(&:name)

f:id:k01ken:20180609133641p:plain
他にも、よく使うコマンドとして、

User.count # usersテーブルの行数を取得します

f:id:k01ken:20180609182624p:plain

User.find(1) # usersテーブルでidカラムが1のデータを取得します

f:id:k01ken:20180609182636p:plain

Rails.env # 現在の環境がdevelopment,test,productionのいずれなのかを知る

f:id:k01ken:20180609184245p:plain
などがあります。


参考リンク
rails c でカラムの確認


■whereメソッドで検索して特定のカラムだけ取得したい場合
itemsテーブルからwhereメソッドでurlカラムにhrnabi.com/が含まれているレコードを抽出して、そのカラムのidだけを一覧として表示したい場合、以下のようにします。

Item.where("url LIKE '%hrnabi.com/%'").map(&:id)

f:id:k01ken:20180915115004p:plain


マイグレーションスクリプトからテーブルにカラムを追加する
・例えば、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 %>

実行結果
f:id:k01ken:20180603021028p:plain

参考リンク
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' %>

参考リンク
image_tagメソッドを使ったイメージタグの作成 - Ruby on Rails入門