実現したいこと
ラジオボタンを用いたアンケート機能を実装しているのですが、データベースに保存してある文字列をラベルに持つラジオボタンを生成する方法を知りたいです。form_forかsimple_formを用いて実装する方法を知りたいです。
どなたかお詳しい方、お力添え頂けると幸いです。
前提と具体的な内容
ラジオボタンのラベルに使う文字列は、questionモデルのq_nameカラムに保存されている文字列を使います。micropostとquestionは一対多の関係にあります。今回の例では、micropostに対して5つのquestionが紐付けられており、それぞれのquestionのq_nameにはa,b,c,d,eの文字列が保存されています。そのため今回実現したいことは、a,b,c,d,eのラベルを持つラジオボタン5つを生成するということです。また、ラジオボタンの選択結果は、questionモデルのis_postカラムに保存したいと考えています。
試したこと
自分なりに考えて実装してみたのですが、うまくいきませんでした。
以下にコードとその結果を記載させていただきます。
試した実装
html
1<% micropost.questions.each do |q| %> 2 <%= simple_form_for(q) do |f| %> 3 <%= f.input :is_post, label: '', as: :radio_buttons, collection: [[q.q_name, q.q_name]] %> 4 <% end %> 5<% end %>
その結果
実行結果は以下の画像のようになってしまいます。q_nameごとに1つのラジオボタンを持つフォームが5つ生成されてしまっているため、複数のラジオボタンにチェックできてしまいます。理想ではどれか1つにチェックを入れられるようにしたいです。
<% micropost.questions.each do |q| %>の部分を、<%= simple_form_for(q) do |f| %>の中に入れれば解決すると思いましたが、やり方がわかりませんでした。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。