複数チェックボックスのカラムを登録⇨更新する内容で、初回登録時(new)だと、**月,火...と表示されるが
更新すると(edit)、["月","火"...]**と表示されてしまいます。
[]がつく要因、解消方法がわかりません。
恐れ入りますが、解決方法をご教授いただけると幸いです。
*update処理時のログ UPDATE "care_users" SET "use_day" = ?, "updated_at" = ? WHERE "care_users"."id" = ? [["use_day", "[\"月\", \"火\", \"水\"]"],
erb
1*new.html.erb 2 3<%= f.label :use_day, class: "label-care-user-new" %><br> 4 <% @use_day.each do |use_day| %> 5 <%= f.check_box :use_day,{ multiple: true,checked: @care_user.use_day.present? ? @care_user.use_day.split(",").include?(use_day) : false }, use_day, nil %> 6 <span><%= use_day %></span> 7 <% end %><br> 8
erb
1*edit.html.erb 2 3<%= f.label :use_day, class: "label-care-user-edit" %><br> 4 <% @use_day.each do |use_day| %> 5 <%= f.check_box :use_day,{ multiple: true,checked: @care_user.use_day.present? ? @care_user.use_day.split(",").include?(use_day) : false }, use_day, nil %> 6 <span><%= use_day %></span> 7 <% end %><br>
erb
1*show.html.erb 2 3<tr> 4 <th>house</th> 5 <td><%= @care_user.house %></td> 6</tr>
rb
1class CareUsersController < ApplicationController 2 3 before_action :set_care_user, only: [:show, :edit, :update] 4 5 6 def new 7 @use_day = ["月", "火", "水","木", "土", "日","祝", "長期休み"] 8 @care_user = CareUser.new 9 end 10 11 def create 12 @care_user = CareUser.new(care_user_params) 13 params[:care_user][:use_day] ? @care_user.use_day = params[:care_user][:use_day] .join(",") : false 14 if @care_user.save 15 flash[:success] = '新規作成に成功しました。' 16 redirect_to @care_user 17 else 18 render :new 19 end 20 end 21 22 def edit 23 @use_day = ["月", "火", "水","木", "土", "日","祝", "長期休み"] 24 end 25 26 def update 27 params[:care_user][:use_day] ? @care_user.use_day = params[:care_user][:use_day] .join(",") : false 28 29 if @care_user.update_attributes(care_user_params) 30 flash[:success] = "利用者情報を更新しました。" 31 redirect_to @care_user 32 else 33 render :edit 34 end 35 end 36 37 38 def show 39 end 40 41 private 42 43 def care_user_params 44 params.require(:care_user).permit(:image, :department, :name,:checkbox,use_day:[]) 45 end 46 47 def set_care_user 48 @care_user = CareUser.find(params[:id]) 49 end 50 51 52end 53
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。