【问题标题】:Set locals value for Cocoon partial using Jquery, Rails 4使用 Jquery,Rails 4 为 Cocoon 部分设置本地值
【发布时间】:2017-02-05 19:14:45
【问题描述】:

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

问题:我可以毫无问题地发送静态值,但我想传递在 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 部分。我可以发送静态值“Holmes”,但我不知道如何发送 使用脚本将 {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 允许从新创建的答案中只选择一个作为正确的答案。

问题:当我创建多个问题时,他们的答案共享相同的单选按钮名称“Holmes”。当用户为第一个问题选择正确答案然后单击第二个问题答案时,会导致问题,以前的选择被清除。

我想要这样:

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" %>

提前感谢您的帮助。

【问题讨论】:

  • 我认为您需要一个复选框。单选按钮将允许您为同一字段指定不同的值(并且只选择一个)。您想指出答案是否正确,因此您必须为每个答案保存一个值,不是吗?我得到单选按钮确保您自动取消选择其他值,但在这种情况下,它不会正确保存到数据库中。我认为您需要这样的东西:stackoverflow.com/questions/2947569/…

标签: javascript jquery ruby-on-rails ruby cocoon-gem


【解决方案1】:

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

_answers_fields.html.erb

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

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

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

      });

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

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

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    相关资源
    最近更新 更多