1

私の質問はこれとほぼ同じです。わずかな違いです。

私は2つのモデルを持っています.FamilyとPersonhas_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とさえ言った人もいます)。

または、これを行う別の方法を提案する

4

1 に答える 1