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

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

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

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

Ruby

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

Q&A

0回答

1285閲覧

f.collection_check_boxesがhiddenに反映されていない

KOO_

総合スコア58

Ruby on Rails 5

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

Ruby

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

0グッド

0クリップ

投稿2020/02/13 02:20

編集2020/02/14 02:44

こんにちは。現在f.collection_check_boxesについてのプログラムを行なっております。

f.collection_check_boxesで作成した内容を、確認のためhiddenに反映されるように構築したいのですが、反映されずに困っております。

f.collection_check_boxes以外は反映されている状態でもしお分かりでしたらご教示頂けないでしょうか?

よろしくお願い致します。

= form_for(@contact, url: { action: :confirm }) do |f| - if @contact.errors.any? strong 入力内容にエラーがあります ul - @contact.errors.each do |attr, msg| li= msg = f.collection_check_boxes :subsidy, Contact.SubsidyLists, :first, :second = f.submit "確認"
= form_for(@contact, url: { action: :thanks }) do |f| = f.hidden_field :subsidy = @contact.subsidy
@@SubsidyLists = [ ["1","1"], ["2","2"] ] def self.SubsidyLists @@SubsidyLists end

よろしくお願い致します。

controller

1 2class ContactController < ApplicationController 3 layout "app" 4 def index 5 @contact = Contact.new 6 render :action => 'index' 7 end 8 9 def confirm 10 @contact = Contact.new(contact_params) 11 if @contact.valid? 12 render :action => 'confirm' 13 else 14 render :action => 'index' 15 end 16 end 17 18 def thanks 19 @contact = Contact.new(contact_params) 20 ContactMailer.received_email(@contact).deliver 21 end 22 23 private 24 def contact_params 25 params.require(:contact).permit( 26 :subsidy 27 ) 28 end 29end

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

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

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

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

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

maisumakun

2020/02/13 02:21

Contactのモデル定義はどのようになっていますか?
KOO_

2020/02/13 02:28

class Contact include ActiveModel::Model attr_accessor :company, :name, :tel, :email, :address, :subject, :employment, :emp_number, :social, :subsidy @@SubsidyLists = [ ["1","1"], ["2","2"] ] def self.SubsidyLists @@SubsidyLists end end となっております!よろしくお願い致します。
siruku6

2020/02/13 11:59

「確認のためhiddenに反映」という部分の意味が少しわからないので確認なのですが、= f.hidden_field :subsidy という部分にデータを入れて画面上に表示させたいということでしょうか? それと、controllerも質問文に掲載いただけると回答が付きやすくなると思います。
KOO_

2020/02/14 01:48

ご返答ありがとう御座います。 おっしゃる通りです。 controllerを追加しましたので、よろしければ確認下さいませ。
Mugheart

2020/02/14 02:13

インデントは正しく取ってください。 コードはコードブロックの中に記述してください。 できればコードブロックに言語を指定してシンタックスハイライトをつけてください。
siruku6

2020/02/14 02:39 編集

Mugheartさんの仰っているのはこういうことです↓(コメント欄ではなくて、これまでどおり質問文内に記載してもらって大丈夫です) ```ruby # ファイル名 ソースコード ```
KOO_

2020/02/14 02:45

ご丁寧にありがとう御座います。上記のような形でよろしいでしょうか? お手間おかけしました。
Mugheart

2020/02/14 02:51

フォーム部分のコードのインデントは正しいですか?
siruku6

2020/02/14 02:54 編集

いえいえ! それと、hidden_fieldがあるファイルは、コントローラーのどのアクションによって表示されますか?? (インデントは間違っていそうではありますね( *¯ ꒳ ¯*;)
KOO_

2020/02/14 05:56

confirmとなります。 今binding.pryで色々確認していますが、 indexからconfirmに引き渡される時点でsubsidy=nilとなっているようです。 include ActiveModel::Modelではf.collection_check_boxesと親和性がないのでしょうか?
Mugheart

2020/02/14 06:34

もう一度だけ質問しますね、フォーム部分のコードのインデントは正しいですか? 面倒くさいと思われているのかもしれませんが、Slimのコードはインデントによって入れ子構造を表現しているのでこの質問に答えていただけない限り回答できません。 先走って色々と試されているようですが、そもそもまずどんなフォームがhtmlで生成されているのか Chromeのデベロッパーツールでも使って確かめた方がいいのではないでしょうか? おそらくですが、この問題は f.collection_check_boxes も ActiveModel::Model も関係ない、slim の 記法と HTML レベルの話でしかないと思いますよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問