環境
- MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)
- OS:Catalina ver:10.15.7(19H2)
- Rails 6.0.3.4
- ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
やりたいこと
- チェックボックスのチェック有無でauthenticationカラムの値を変更したい
経緯
- storesテーブルにauthenticationカラム(boolean型)を追加
- チェックボックスにauthenticationカラムを与えて作成(update)を押下
ruby
1_form.html.erb 2<%= form_with(model: @store, local: true) do |f| %> 3〜中略〜 4 <%= f.label "認証マークを与える" %> 5 <%= f.check_box :authentication %> 6 <%# f.check_box(:object_name,{:checked=>true},"チェック時の値","未チェック時の値") %> 7 <%= f.submit "作成" %> 8<% end %>
- binding.pryでparamsを確認してもチェックした場合は:authenticationが0→1に変わっていることを確認
ruby
1[1] pry(#<StoresController>)> params 2=> <ActionController::Parameters {"_method"=>"patch", "authenticity_token"=>"~~~", "store"=><ActionController::Parameters {"name"=>"test", "category_id"=>"3", "detail"=>"aaa", "authentication"=>"1"} permitted: false>, "commit"=>"作成", "controller"=>"stores", "action"=>"update", "id"=>"26"} permitted: false>
- SequelProでレコードを確認すると:authenticationの値は0のままとなっている
- コントローラーで:authenticationはpermitしている
ruby
1class Admin::StoresController < ApplicationController 2 before_action :set_store, only: [:edit, :update, :destroy] 3〜中略〜 4def update 5 if @store.update(store_params) 6 redirect_to store_path 7 return 8 end 9 render :edit 10 flash[:notice]="情報を入力していない箇所があります。" 11end 12 13 private 14 def store_params 15 params.require(:store).permit(:name, :images, :category_id, :detail, :authentication).merge(user_id: current_user.id) 16 end 17 18 def set_store 19 @store = Store.find(params[:id]) 20 end 21end
- 必要な情報があれば教えて下さい。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。