LoginSignup
0
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-09-23

基礎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)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0