前 基礎Ruby on Rails Chapter6 フォームとモデル
次 基礎Ruby on Rails Chapter7 バリデーションと国際化
レコードの作成、更新、削除
作成と更新の流れ
- 新規作成
- 更新
会員の新規登録と更新
ストロング・パラメータの無効化
- 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;
}
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
会員の削除
app/controllers/members_controller.rb
def destroy
@member = Member.find(params[:id])
@member.destroy
# 削除が成功したらindexにリダイレクトする。フラッシュ値を設定する。
redirect_to @members, notice: "会員を削除しました。"
end