質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 3

Ruby on Rails3はRubyによって書かれたオープンソースのウェブフレームワークです。Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

807閲覧

配列カラムの取得値がeditアクションだと[]が付いてしまいます

zoff77

総合スコア19

Ruby on Rails 3

Ruby on Rails3はRubyによって書かれたオープンソースのウェブフレームワークです。Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2021/05/10 13:38

編集2021/05/11 08:10

複数チェックボックスのカラムを登録⇨更新する内容で、初回登録時(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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

modelにgsub!メソッドを使用したbefore_saveを記入することで解決しました。
お手数おかけしました。

rb

1before_save do 2 self.use_day.gsub!(/[[]\"]/, "") if attribute_present?("use_day") 3 end

投稿2021/05/11 22:52

zoff77

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問