私の質問はこれとほぼ同じです。わずかな違いです。
私は2つのモデルを持っています.FamilyとPersonはhas_many
家族から人へaccepts_nested_attributes_for :persons
、そしてfamily.rbで
私のFamiliesControllerにはedit
、レコードを編集する方法があります。そこで、家族と対応する人物にネストされたフォームを使用しています。(そのため、1 つの家族に多くの人がいる可能性があります)
私のedit.html.erbには、次のようなフォームがあります。
<%= simple_form_for @family do |f| %>
#family fields here
<%= f.simple_fields_for :persons do |p| %>
<%= p.input :gender,as: :radio_buttons,collection: ["Male","Female"],wrapper_html: {id: "gender"} %>
<%= p.input :question,wrapper_html: {id: "question"} %>
<% end %>
<%= f.submit "Submit" %>
<% end %>
(リンクのような質問に似ています)
そして、回答に記載されているのと同じJavaScriptを適用しました。(ここ)
$(function(){
var toggle_gender = function(visible) {
if (visible){
$("#question").show();
} else {
$("#question").hide();
}
}
$("#gender input").change(function(){
toggle_gender($(this).val()=="Male")
})
toggle_gender($("#gender input:checked").val()=="Male")
})();
生成された HTML:
<div class="control-group radio_buttons required family_persons_gender gender">
<label class="radio_buttons required control-label">
<abbr title="required">*</abbr>
Gender
</label>
<div class="controls">
<label class="radio">
<input id="family_persons_attributes_1_gender_male" class="radio_buttons required" type="radio" value="Male" name="family[persons_attributes][1][gender]" checked="checked">
Male
</label>
<label class="radio">
<input id="family_persons_attributes_1_gender_female" class="radio_buttons required" type="radio" value="Female" name="family[persons_attributes][1][gender]">
Female
</label>
</div>
</div>
<div class="control-group string required family_persons_mobnum mobnum">
<label class="string required control-label" for="family_persons_attributes_1_mobnum">
<abbr title="required">*</abbr>
Mobile No.
</label>
<div class="controls">
<input id="family_persons_attributes_1_mobnum" class="string required" type="text" value="9099067758" size="50" name="family[persons_attributes][1][mobnum]">
</div>
</div>
しかし、これは最初の人にしか機能しません。意味 1 家族と 3 人がいる場合、javascript は最初の人に対してのみ機能します。なんでそうなの?
意味2 人がいて、2 人称で性別を変更した場合、JavaScript は 2 人称ではなく 1 人称で機能します
この問題を解決するにはどうすればよいですか?
私は繰り返しjavascriptを使用するためにどこかを読みました(underscore.jsとさえ言った人もいます)。
または、これを行う別の方法を提案する