嵌套表单 gem 和 jquery 的 Rails 问题

Posted

技术标签:

【中文标题】嵌套表单 gem 和 jquery 的 Rails 问题【英文标题】:Rails Issue with nested_form gem and jquery 【发布时间】:2015-08-26 18:49:40 【问题描述】:

我有一个嵌套表格,并使用了 ryan bates 的nested_form gem,我在该领域使用了老鼠星,表格为

<%= f.fields_for :round_questions do |question| %>
     <%= question.label :question %>
     <%= question.text_field :question %>

     <div class="star-questions" > </div>
     <%= question.text_field :answer %>

<% end %>

<%= f.link_to_add "Add a Question", :round_questions,
  :class=> 'btn waves-effect waves-light btn-medium custom_btn_gray',:id => "add-fields" %>

并且 javascript 被给出为

$(document).ready(function() 
    $('.star-questions').raty(

        targetType : 'score',
        targetKeep : true
);

            $(document).on('click', '#add-fields', function()

                $('.star-questions').raty(
                    targetType : 'score',
                    targetKeep : true
                );
            );

问题是,当我点击添加问题时,之前的星级评分为空,我知道为什么会这样,因为我再次将评分函数传递给所有星级问题 请告诉我如何添加保留以前星级的问题

【问题讨论】:

这是一个解决方案吗?我不明白 @nishantvarshney 你确定这是一个有效的 JS 吗? @hawk 我已经编辑了 JS 请仔细阅读 【参考方案1】:

试试下面的代码-

$(function()
  $('.star-questions').raty(
        targetType : 'score',
        targetKeep : true
      );

     $(document).on('nested:fieldAdded:round_questions', function(event)
        event.field.find('.star-questions').raty(
          targetType : 'score',
          targetKeep : true
       );
   );
);

【讨论】:

我已经编辑了您的答案,您忘记了要输入的内容,但是这个逻辑有效,非常感谢!!

以上是关于嵌套表单 gem 和 jquery 的 Rails 问题的主要内容,如果未能解决你的问题,请参考以下文章

rails wicked gem has_one 关联和嵌套形式

具有活动管理员的 Rails 双嵌套表单

jQuery触发嵌套表单rails cocoon上的所有实例

<ol> <li> 使用 rails partial 和 cocoon gem 实现的问题

使用 Rails、jquery 和 best_in_place gem 就地编辑

Rails jQuery 自动完成和动态嵌套字段