Railsのあれこれ その2
メールアドレスのバリデーション(重複なし)
メールアドレスは被らないようにするため、バリデーションを使います。
validates :email, {presence: true, uniqueness: true}
Userモデルでこのようにバリデーションを定義します。
また、ユーザー名は
validates :name, { presence: true }
このような感じで良いでしょう。
Herokuの残り時間
Herokuの無料プランの残り時間を確かめるためには
heroku ps
と打ちましょう。
Free dyno hours quota remaining this month: 660h 40m (66%)
という感じで残りの時間とパーセントが表示されます。
Showアクション(詳細ページ)
詳細ページは
まずルーティングを作ります。
showのルーティングは
get "posts/index" => "posts#index" get "posts/new" => "posts#new" get "posts/:id" => "posts#show" post "posts/create" => "posts#create" get "posts/:id/edit" => "posts#edit" post "posts/:id/update" => "posts#update" post "posts/:id/destroy" => "posts#destroy"
このような順番になることに注意して下さい。 (get "posts/index" => "posts#index"よりも下に書く)
次にアクションを記述します。
def show @post = Post.find_by( id: params[:id]) end
のようにしてコントローラーにshowアクションを作ります。
ビューには
show.html.erb というファイルに
<div class="container"> <h2><%= @post.content %></h2> <p><%= @post.updated_at %></p> </div>
例えばこのようにして、表示させたいテーブルを表示させるようにすればOKです。
また、indexページ(一覧ページ)にリンクで
<% @posts.each do |post| %> <%= link_to( post.content , "/posts/#{post.id}" ) %> <% end %>
このように、showページ(個別ページ)に飛ぶようにリンクを設定します。
コントローラーは
rails g controller users index
などと書いて 「users」「posts」コントローラーのように複数形でコントローラーを作り、 (PostsController、UsersControllerなど)
モデルを呼ぶ時は
def show @user = User.find_by(id: params[:id]) end
このように単数形で呼ぶことに注意しましょう。