それぞれ、、survey
has_many
results
およびaccepts_nested_attributes_for
results
。
/app/models/survey.rb:
attr_accessible :results_attributes
has_many :results
accepts_nested_attributes_for :results
各結果は選択されているか、選択されていないかのいずれかです。
/db/schema.rb:
create_table "results", :force => true do |t|
t.boolean "selected", :default => false
t.integer "survey_id"
end
時々@survey.additive == true
。そのような場合、任意の数の結果を選択できます。これは、の各チェックボックスに1つずつ、一連のチェックボックスで表しresult
ます@survey.results
。
時々@survey.additive == false
。そのような場合、選択できる結果は1つだけです。これは、の各ボタンに1つずつ、一連のラジオボタンで表しresult
ます@survey.results
。
simple_formとHAMLを使用しています。
/app/views/surveys/_form.html.haml
で選択する結果を選択するための一連のラジオボタンが作成されるように作成しようとしています@survey.additive == false
。
(そこから、コードを簡単に推定して、一連のチェックボックスを作成することもできます@survey.additive == true
。)
私の最初の試みは:
= simple_form_for [@competitor, @survey] do |f|
= f.error_notification
= f.simple_fields_for :results do |r|
= r.input :selected, :as => :radio_buttons, :label => r.name
= f.button :submit, :id => 'submit_survey'
それは私にundefined method 'name' for #<SimpleForm::FormBuilder:0x007fbd1f687048>
エラーをもたらしました。
2番目の動きは削除でし:label => r.name
たが、結果として4つの別々の行のラジオボタンが作成されました。各行には「選択済み」というラベルが付いており、それぞれに「はい」ラジオボタンと「いいえ」ラジオボタンが含まれています。別に言うと、ある行で[はい]を選択すると、その行で[いいえ]の選択が解除されますが、他の行のラジオボタンには影響しませんでした。(実際に必要だったのは、接続された4つのラジオボタンで、それぞれにresult.name
inのラベルが付いている@survey.results
ため、4つのうちのいずれかを選択解除すると、他の3つも選択解除されます。)
その後、いろいろなバリエーションを試しましたが、今のところすべて失敗しています。私は何をすべきか?