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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1970閲覧

Rails でのcheck_boxパラメーター取得方法

HisanoriSato

総合スコア67

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/10/08 06:49

チェックボックスのパラメーターを取得できない

下記の<div class-"form-checkbox">内のチェックボックス選択によるパラメータ取得がなぜかうまく行かず、
後続処理が進まないことを助けていただけないでしょうか。
下記の記述によりチェックボックス事にパラメータを設定して提出時に受け取るようにしています。
しかし、controllerで上手くパラメータを活用できていません。
パラメータがあれば[invoice_flg]項目に値"1"を入れるようにしています。
が、controllerの記述でパラメータが認識できていません。

【view】

<div class="main posts-new"> <div class="container"> <h1 class="form-heading">新規作成</h1> <%= form_tag("/sheets/create") do %> <div class="form"> <div class="form-body"> <% @sheet.errors.full_messages.each do |message| %> <div class="form-error"> <%= message %> </div> <% end %> <a>区分選択</a> <br> <div class="form-checkbox"> <%= check_box :sheet, :invoice_flg, {class: "check_box"}, checked_value = "1",nil %> <%= label :invoice_flg, "請求" %> <%= check_box :sheet, :cf_flg, {class: "check_box"}, checked_value = "1",nil %> <%= label :cf_flg, "締日" %> <%= check_box :sheet, :a_cf_flg, {class: "check_box"}, checked_value = "1",nil %> <%= label :a_cf_flg, "会計締" %> <%= check_box :sheet, :req_flg, {class: "check_box"}, checked_value = "1",nil %> <%= label :req_flg, "情報課作業" %> <%= check_box :sheet, :beg_m_flg, {class: "check_box"}, checked_value = "1",nil %> <%= label :beg_m_flg, "月初翌営業日" %> <br> <%= check_box :sheet, :fare_flg, {class: "check_box"}, checked_value = "1",nil %> <%= label :fare_flg, "運賃締" %> <%= check_box :sheet, :monthly_flg, {class: "check_box"}, checked_value = "1",nil %> <%= label :monthly_flg, "月次" %> <%= check_box :sheet, :mnext_flg, {class: "check_box"}, checked_value = "1",nil %> <%= label :mnext_flg, "月次翌営業日" %> </div> </div> <input type="submit" value="投稿"> </div> </div> <% end %> </div> </div>

【log】(該当箇所に#コメントを入れています)

Started POST "/sheets/create" for ::1 at 2021-10-08 15:16:53 +0900 Processing by SheetsController#create as HTML Parameters: {"utf8"=>"✓", #ここにパラメータとして[invoice_flg]があるのに "authenticity_token"=>"OgO02tTdr8SaZTNoHMKfLq86gtTkDQ39QLESPQ0lwKaFA4Nv/p67i19LQjarwigvNTV/0BZlWOPNbnVwrTADMw==", "duty_date"=>"2021-10-07", "a_code"=>"", "c_code"=>"", "i_code"=>"", "m_code"=>"02445", "set_code"=>"", "sheet"=>{"invoice_flg"=>"1"}} User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]] ↳ app/controllers/application_controller.rb:5 User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."emp_code" = ? LIMIT ? [["emp_code", ""], ["LIMIT", 1]] ↳ app/controllers/sheets_controller.rb:24 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."emp_code" = ? LIMIT ? [["emp_code", ""], ["LIMIT", 1]] ↳ app/controllers/sheets_controller.rb:29 User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."emp_code" = ? LIMIT ? [["emp_code", "02445"], ["LIMIT", 1]] ↳ app/controllers/sheets_controller.rb:34 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."emp_code" = ? LIMIT ? [["emp_code", ""], ["LIMIT", 1]] ↳ app/controllers/sheets_controller.rb:39 CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."emp_code" = ? LIMIT ? [["emp_code", ""], ["LIMIT", 1]] ↳ app/controllers/sheets_controller.rb:44 (0.0ms) begin transaction ↳ app/controllers/sheets_controller.rb:54 #controllerでnilと認識され、うまく保存されない。 Sheet Create (2.2ms) INSERT INTO "sheets" ("created_at", "updated_at", "duty_date", "m_code", "m_name", "creator_code", "creator_name") VALUES (?, ?, ?, ?, ?, ?, ?) [["created_at", "2021-10-08 06:16:53.247569"], ["updated_at", "2021-10-08 06:16:53.247569"], ["duty_date", "2021-10-07"], ["m_code", "02445"], ["m_name", "aaaaa"], ["creator_code", "02445"], ["creator_name", "aaaaa"]] ↳ app/controllers/sheets_controller.rb:54 (19.9ms) commit transaction ↳ app/controllers/sheets_controller.rb:54 Redirected to http://localhost:3000/sheets/index Completed 302 Found in 42ms (ActiveRecord: 23.7ms)

【contrller】[#!!!!!!!!!!!!!!!!!!!!該当処理!!!!!!!!!!!!!!!!!!!!!!!]直下が該当のコード

def create @sheet = Sheet.new( duty_date: params[:duty_date], creator_code: @current_user.emp_code, creator_name: @current_user.emp_name, ) #選択ユーザをパラメータから取得し、ユーザ項目にセット #C当番情報セット if @c_user = User.find_by(emp_code: params[:c_code]) @sheet.c_code = @c_user.emp_code @sheet.c_name = @c_user.emp_name end #A当番情報セット if @a_user = User.find_by(emp_code: params[:a_code]) @sheet.a_code = @a_user.emp_code @sheet.a_name = @a_user.emp_name end #月次当番情報セット if @m_user = User.find_by(emp_code: params[:m_code]) @sheet.m_code = @m_user.emp_code @sheet.m_name = @m_user.emp_name end #請求情報セット if @i_user = User.find_by(emp_code: params[:i_code]) @sheet.i_code = @i_user.emp_code @sheet.i_name = @i_user.emp_name end #情報課担当者情報セット if @set_user = User.find_by(emp_code: params[:set_code]) @sheet.set_code = @set_user.emp_code @sheet.set_name = @set_user.emp_name end   #!!!!!!!!!!!!!!!!!!!!該当処理!!!!!!!!!!!!!!!!!!!!!!! #当番区分毎にフラグセット if params[:invoice_flg] == "1" @sheet.invoice_flg = "1" end if @sheet.save flash[:notice] = "シートを作成しました" redirect_to("/sheets/index") else render("sheets/new") end end

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。
あてずっぽうで下記のcontrollerを下記に変更したところ、正常にパラメータを所得できました。

【変更前抜粋】

def create @sheet = Sheet.new( duty_date: params[:duty_date], creator_code: @current_user.emp_code, creator_name: @current_user.emp_name,    #下記該当箇所 invoice_flg: params[:invoice_flg] )

【変更後抜粋】

def create @sheet = Sheet.new( duty_date: params[:duty_date], creator_code: @current_user.emp_code, creator_name: @current_user.emp_name,    #下記該当箇所 invoice_flg: params[:sheet][:invoice_flg] )

投稿2021/10/08 07:26

HisanoriSato

総合スコア67

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問