LoL-pj / LoL-VC

6 stars 0 forks source link

🐛Fix enable delete button #42

Closed rutko closed 4 years ago

rutko commented 4 years ago

内容 フォーム画面の削除ボタンがdestroyではなく、updateになっていた件

原因 app/views/teams/_form.html.hamlがレンダリングされるファイルは以下2つ

編集時のactionがupdateになるため、destroyとして動作しなかった。

変更内容 1フォームにつき、1actionが一般的なのでフォーム内に2つactionが違うボタンを設置する場合は 指定したactionのあるコントローラ内で制御する必要がある。

updateアクションにdestroyの動作を入れてしまうのは美しくはないけど、一旦こんな感じで変更した

nameを付与してパラメータとして渡せる用に設定

    = f.submit "更新する", name: 'update', class: "waves-effect waves-light btn"
    = f.submit "削除する", name: 'delete', class: "waves-effect waves-light btn" 
def update
    if @team.authenticate(team_params[:password])
    if params[:update] && @team.authenticate(team_params[:password])
      @team.update(team_params)
      redirect_to @team, notice: '投稿を更新しました'
    elsif params[:delete] && @team.authenticate(team_params[:password]) #destroyパラメータがあればdestroyアクションに遷移する
      self.destroy
    else
      redirect_to edit_team_path, alert: 'パスワードが一致しません'
    end
  end