今回は
ステータスにの変更に連動して、ステータスを更新したいなと思いました。
前提
```
Projectモデル
title
status
enum status: {
open:1,
close:2
}
```
要件
- 1.表示画面で、現在のモデルのステータスを表示する
- 2.ステータスの変更に応じてコントローラーにリクエストを表示する
- 3.レスポンスのタイミングで、ステータスに色をつける
1.に関しては単純にこんな感じ
```
= form_for @project, do |f|
= f.text_field :title
= f.collextion_select :status, Project.statuses_i18n, :first, :last, {}, class:"project_status"
= f.submit '送信', class:"none" # submitはボタンをsisplay:none;
```
2.に関しては、
project_statusのクラス名に onイベント && changeで反応されました
```
これのいいところは、リクエストを送った場合のparamsが
project: {status: "open"}などのネストで送られるところかな
$(function() {
$('.project_statys').on('change', function() {
$(this).closest('form').find('[type=submit]').click();
});
});
```
ここで問題リクエストのタイプがhtmlなので、jbuilderが使えない
そこで下記対応
この2つをform_forに追加すればjsonのリクエストができる
- remote: true
- format: :json
```
= form_for @project, remote: true, format: :json do |f|
= f.text_field :title
= f.text_field :price
= f.submit '送信'
```