使用 Jquery、Rails 4 为 Cocoon 部分设置局部值

Set locals value for Cocoon partial using Jquery, Rails 4

我正在创建简单的测验应用程序。到目前为止,我已经实现了允许创建嵌套表单的 Cocoon gem。一切都很好,除了我想将一些变量传递给 Cocoon partial。

问题:我可以毫无问题地发送静态值,但我想传递在 Jquery.

中计算的动态值

我的代码:

index.html.erb

<%= link_to_add_association 'Pievienot atbildi', f, :answers,render_options: {locals: { question_id: 'Holmes' }}, :class=>"btn btn-default" %>


<script type="text/javascript">
          var n = $( ".reg_input_question" ).length;
          alert(n); 
</script>

_answer_fields.html.erb

  <%= f.radio_button :correct_one, false, :checked => false, :name=> question_id %>
  <%= link_to_remove_association "Dzēst atbildi", f , :class=>"btn btn-default text-danger"%>

我想将 n 变量从 index.html.erb 页面发送到 _answers_fields部分。我可以发送静态值“福尔摩斯”,但我不知道如何发送 使用脚本将 {locals: { question_id: 'Holmes' }} 值设置为其他值。

我发现 Great example 可以用常规的局部处理来做到这一点,但是因为我使用的是 Cocoon 局部处理,所以我不能像那个例子那样做。

我想要达到的目标:

我有 3 个嵌套模型测试、问题和答案。首先,我正在创建问题:

 <%= link_to_add_association "Pievienot jautājumu", f, :questions, :class=>"btn btn-default" %>

创建问题后,我可以使用上面的代码创建答案。答案部分由答案文本和 correct_one 布尔值组成。我正在使用 radio_button 以允许 select 只是来自新创建的答案中的一个 correct_one。

问题:当我创建多个问题时,他们的答案共享相同的 radio_button 名称“福尔摩斯”。当用户 select 编辑了第一个问题的正确答案,然后单击第二个问题时,这会导致问题,之前的 select 离子被清除。

我要这样:

1. Question
   <%= f.radio_button :correct_one, false, :checked => false, :name=> 1 %>
   <%= f.radio_button :correct_one, false, :checked => false, :name=> 1 %>

2. Question
   <%= f.radio_button :correct_one, false, :checked => false, :name=> 2 %>
   <%= f.radio_button :correct_one, false, :checked => false, :name=> 2 %>

目前我有这样的:

1. Question
   <%= f.radio_button :correct_one, false, :checked => false, :name=> "Holmes" %>
   <%= f.radio_button :correct_one, false, :checked => false, :name=> "Holmes" %>

2. Question
   <%= f.radio_button :correct_one, false, :checked => false, :name=> "Holmes" %>
   <%= f.radio_button :correct_one, false, :checked => false, :name=> "Holmes" %>

在此先感谢您的帮助。

我找到了解决这个问题的方法:

_answers_fields.html.erb

      $('input[name="Holmes"]').each(function () { 

        var id = $(this).attr('id').match(/\d+/);

        $(this).attr('name', id);

      });

基本上,此脚本遍历名称为 "Holmes" 的所有答案字段,并将名称属性更改为 id 的一部分(因为每个输入的 id 是特定于资源的 - 每个问题 id 都传递给嵌套资源)。

丑陋的方法,但它确实可以满足我的需要。