Sinatra サーバーの一部として実装されたルーチンに、@theModels と呼ばれる文字列の配列があります。これらのモデルはユーザーが選択できるオプションであり、バックエンドによって取得されます (つまり、新しいモデルが追加されても、フロントエンドのコードは変更されるべきではありません)。
私はhamlを使ってhtmlをレンダリングしています。
各要素がチェックボックスになるように、@theModels のリスト内の各要素を列挙するにはどうすればよいですか? また、ユーザーが選択したチェックボックスを取得するにはどうすればよいですか?
置くだけでわかります
= @theModels
@theModels に含まれる文字列のリストが表示されますが、スペースなどはなく、チェックボックスには含まれていません。似ているように見えるこの質問を見つけましたが、私のhaml-fuはそれを必要なものに変換するのに十分ではありません.
アップデート:
これらはファイルのアップロードに関連付けられたオプションで、コードは次のようになります。
%form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"}
- @theModelHash.each do |key,value|
%br
%input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value}
=key
%input{:type=>"file",:name=>"file"}
%input{:type=>"submit",:value=>"Upload"}
問題は、最後ではなく、各オプションにファイルアップロードボタンを配置することです。最後に、送信ボタンは 1 つだけ必要です。「アップロード」ボタンが押されたときに両方の結果を報告する 2 つのフォームが必要ですか?
更新 2:
少し考えた後、上記は次のように変更できます。
ありがとう!
%form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"}
- @theModelHash.each do |key,value|
%br
%input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value}
=key
%form{:action=>"/Upload",:method=>"post",:enctype=>"multipart/form-data"}
%input{:type=>"file",:name=>"file"}
%input{:type=>"submit",:value=>"Upload"}
そして、それは私が望むことをしているようです。