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

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

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

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

Ruby on Rails 6

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Ruby on Rails

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

HTML

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

Q&A

解決済

2回答

624閲覧

【Rails】セレクトボックスの値を送信させたくない【HTML】

miyuki-glass

総合スコア4

Ruby

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

Ruby on Rails 6

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

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Ruby on Rails

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

HTML

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

0グッド

0クリップ

投稿2021/06/26 09:14

編集2021/06/26 09:19

正解というより、皆さんでしたら、どのようにコーディングするかご意見頂きたいです。
現状のHTMLを変更して、現状の送信されているデータの構造を変更したいです。

言語:Ruby

現状のHTML(erb)

Ruby(HTML)

1 <% @articles.each do |article| %> 2 <div data-article_id="<%= article[:article_id] %>"> 3 <%= select_tag 'types[]', options_for_select({選択してください: "not_selected", タイプA: "type_a", タイプB: "type_b", タイプC: "type_c", タイプD: "type_d"}) %> 4 <p><%= check_box_tag "ids[]", article[:id], false, id: "article_id_#{page[:article_id]}", class: "form-checkbox rounded text-blue-500 mr-1" %> 5 <label for="article_id_<%= article[:article_id] %>" class="align-middle">送信対象として選択する</label></p> 6 </div> 7 <% end %>

上記をsubmitした際の、現状のparamsの中身

{"types"=>["type_c", "type_b"], "article_ids"=>["676", "677"], "commit"=>"確認する", "controller"=>"article/register", "action"=>"select", "id"=>"370"

修正したい形

{"article_ids"=>[["676","type_c"], ["677","type_b"]], "commit"=>"確認する", "controller"=>"article/register", "action"=>"select", "id"=>"370"

つまり

現状
@articlesをループで回す中で、articleのidはチェックボックスなので選択した値だけが送信されますが、typeはセレクトボックスなので、全て送信されます。

修正後
チェックボックスで選択していないarticleのidに紐づくセレクトボックスのtypeは送信させたくないのです。
チェックされている場合は、idとtypeを1つの配列として、以下の形のようにパラメータに加えたいです。

"article_ids"=>[["676","type_c"], ["677","type_b"]],

typesというkeyは廃止の方向です。

何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

railsから見たとき、ブラウザーが返すのは key => value でかつvalueはStringです。
ですので "article_ids"=>[["676","type_c"], ["677","type_b"]]
という形を得るには、HTML素ではだめで、JSで整形と controller側でそのStringを配列の配列に戻す作業が必要になります。(Jsonのparseでできますが)
"articles" => { "676" => {"type" => "type_c"}, }
という形なら
name="articles[676][type]" という select_tag になるようにすれば出来ます。

投稿2021/06/26 23:05

winterboum

総合スコア23408

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

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

miyuki-glass

2021/06/30 06:14

ありがとうございます!
guest

0

JavaScriptでその送信したくないときにSELECTにdisabled属性を付与するとかですかね。

投稿2021/06/26 11:00

m.ts10806

総合スコア80861

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

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

miyuki-glass

2021/06/30 06:14

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問