Ruby on Railsです。フォームで配列を送信する
2023-10-13 19:27:03
質問
配列の属性を持つモデルを持っています。フォームの送信からその属性を入力する適切な方法は何でしょうか?
名前が括弧を含むフィールドを持つフォーム入力が、入力からハッシュを作成することは知っています。これをコントローラで処理して配列に変換すればよいのでしょうか?
抽象度を下げるための例です。
class Article
serialize :links, Array
end
links変数はURLの配列の形式をとります、つまり
[["http://www.google.com"], ["http://stackoverflow.com"]]
フォームで以下のようなものを使用すると、ハッシュが作成されます。
<%= hidden_field_tag "article[links][#{url}]", :track, :value => nil %>
結果のハッシュは次のようになります。
"links" => {"http://www.google.com" => "", "http://stackoverflow.com" => ""}
リンクの名前にurlを含めないと、追加の値がお互いにぶつかり合ってしまいます。
<%= hidden_field_tag "article[links]", :track, :value => url %>
結果はこのようになります。
"links" => "http://stackoverflow.com"
どのように解決するのですか?
html フォームに空の角括弧を含む入力フィールドがある場合、それらはコントローラの params 内の配列に変換されます。
# Eg multiple input fields all with the same name:
<input type="textbox" name="course[track_codes][]" ...>
# will become the Array
params["course"]["track_codes"]
# with an element for each of the input fields with the same name
を追加しました。
なお、railsヘルパーは ではなく は自動で魔法のように配列のトリックを行うように設定されていることに注意してください。そのため 名前 属性を手動で作成する必要があります。また、チェックボックスヘルパーはチェックされていないケースを処理するために追加の隠しフィールドを作成するため、railsヘルパーを使用する場合は独自の問題が発生します。
関連
-
[解決済み】bundle installが "Could not locate Gemfile "を返す。
-
[解決済み】Bundler: コマンドが見つからない
-
[解決済み】Rails。Ruby on Railsの移行でデータベースカラムの名前を変更するにはどうすればよいですか?
-
[解決済み】gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] Webフォームのフィールド/入力タグでブラウザのオートコンプリートを無効にするにはどうすればよいですか?
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】取得中。「プロジェクトのクローンとマイグレート後に、「マイグレーションは保留中です。この問題を解決するには 'bin/rake db:migrate RAILS_ENV=development' を実行してください。
-
[解決済み] heroku open - no app specified
-
[解決済み] Rails のインストールに失敗する: activesupport には Ruby のバージョン >= 2.2.2 が必要です。
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] 検索 vs 発見する by vs どこに
-
[解決済み] Oauth2 Instagram API "リダイレクトURIが登録されたリダイレクトURIと一致しない"
-
[解決済み] gemのアップデート後、"Asset was not declared to be precompiled in production "でテストが失敗する。
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] バリデーションなしで属性を更新する方法
-
[解決済み] 構文エラー "構文エラー、予期しない入力終了、keyword_endを期待 (SyntaxError)"