概要
enumを使って、フォーム(checkbox)を作成した際に
ArgumentError ('1' is not a valid brake):
のエラーが発生してしまいました。
このカラムでは整数しか入らないようにしているので、'1'(文字列)が入ってくることをinvalidしているだと思いますが、
どのようにしたら数値の1を渡せるようになるのか、ご教授いただけると幸いです。
rails '6.0.3'
デバッグ
フォームを飛ばしたときのparamの中身(やはり文字列の"1"が入っている、、、)
(byebug) params <ActionController::Parameters {"authenticity_token"=>"...", "brake"=>"1", "controller"=>"download", "action"=>"confirm"} permitted: false>
コード
download.rb
class Download < ApplicationRecord enum brake: {on: 1, off: 0}, _prefix: true end
new.html.erb
<%= form_with url: create_download_path(@download), local: true do |f| %> <fieldset class="form_check-block"> <label> <%= f.check_box :brake, checked: @download&.brake_on? %> <%= f.label " ", class: "top_left" %> </label> </fieldset> <span>ブレーキ</span> <button>登録する</button> <% end %>
download_controller.rb
class download_controller < ApplicationController def new @download = ::Download.new end def create @download = ::Download.new(download_params) @download.save end def download_params params.permit(:brake ) end end
shema.rb
create_table "download", force: :cascade do |t| t.integer "brake", limit: 1, default: 1, null: false t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/11 12:35