Edited at

基礎Ruby on Rails Chapter6 レコードの作成、更新、削除

基礎Ruby on Rails Chapter6 フォームとモデル

基礎Ruby on Rails Chapter7 バリデーションと国際化


レコードの作成、更新、削除


作成と更新の流れ


  • 新規作成


    • 空の@memberを作成 → new.html.erbをレンダリング → @memberを作成、保存


      • エラーがある場合 : new.html.erbをレンダリング、エラーメッセージ表示 → @memberを作成、保存





  • 更新



    • @memberをDBから取り出す → edit.html.erbをレンダリング → @memberを取り出し、保存


      • エラーがある場合 : edit.html.erbをレンダリング、エラーメッセージ表示 → @memberを作成、保存






会員の新規登録と更新


ストロング・パラメータの無効化


  • config/application.rbに以下を追記する。


config/application.rb(一部)

config.action_controller.permit_all_parameters = true



  • ストロングパラメータを無効にするとセキュリティが低下するので、最終的には有効にするが、学習のために一旦無効にしておく。


createアクション


app/controllers/members_controller.rb

  def create

@member = Member.new(params[:member])
if @member.save
# 保存が成功したらshowにリダイレクトする。フラッシュ値を設定する。
redirect_to @member, notice: "会員を登録しました。"
else
# エラー発生時はnewに戻る
render "new"
end
end


  • noticeの表示部分を作成する。


app/views/layouts/application.html.erb(一部)

      <main>

<% if flash.notice %>
<p class="notice"><%= flash.notice %></p>
<% end %>

<%= yield %>
</main>



  • cssファイルを新規作成する。


app/assets/stylesheets/flash.css

/* フラッシュ */

p.notice {
border: 1px solid blue;
padding: 3px;
background-color: #ccf;
}


image.png


updateアクション


app/controllers/members_controller.rb

  def update

@member = Member.find(params[:id])
@member.assign_attributes(params[:member])
if @member.save
# 保存が成功したらshowにリダイレクトする。フラッシュ値を設定する。
redirect_to @member, notice: "会員を更新しました。"
else
# エラー発生時はeditに戻る
render "edit"
end
end

image.png


会員の削除


app/controllers/members_controller.rb

  def destroy

@member = Member.find(params[:id])
@member.destroy
# 削除が成功したらindexにリダイレクトする。フラッシュ値を設定する。
redirect_to @members, notice: "会員を削除しました。"
end

image.png

image.png

参考

改訂4版 基礎 Ruby on Rails (IMPRESS KISO SERIES)