使用Ruby on Rails3中的过滤器检查为字段呈现嵌套表单

时间:2013-05-24 15:23:36

标签: ruby-on-rails ruby ruby-on-rails-3

作为Ruby on Rails的新手,我坚持使用过滤器检查来渲染nested_form_for字段。嵌套表单模型中已经包含一些数据,据说这些数据是默认数据。现在,在编辑模型时,我需要设置只读功能,并且不希望在这些默认数据上设置任何删除链接。模型'is_default'中有一个字段实际上表示该记录是默认的。那么我怎样才能过滤那些数据呢?任何人都可以把我拉出来。

提前致谢

1 个答案:

答案 0 :(得分:0)

分享我是如何做到这一点的...... 在我的部分渲染文件中,我使用了edit.js.erb,这实际上是必需的,因为我需要使用AJAX调用加载所有东西。所以在这部分我添加了额外的JQuery代码来设置readonly值并隐藏删除锚点。以下是我的代码......

if('<%= @apps_event.is_std %>' == 'y' && '<%= @action %>' != 'create') {
  $("#eventFormContainer").html("<%= escape_javascript(render(:partial => 'form_standard'))%>");
  var stdAttrib = <%= @apps_event.apps_events_attributes.size %>
  var stdAttribStr = 'apps_event_apps_events_attributes_attributes_';
  for (var i=0; i < stdAttrib; i++) {
    if($('#' + stdAttribStr + i + '_is_std').attr('value') === 'y') {
        $('#' + stdAttribStr + i + '_name').attr('readonly', 'readonly');
        var selectValue = $('#' + stdAttribStr + i + '_attribute_type').attr('value');
        $('#' + stdAttribStr + i + '_attribute_type option').each(function() {
            if ( $(this).val() != selectValue ) {
                $(this).remove();
            }
        });
        $('#' + stdAttribStr + i + '_is_std').parent().children('a.remove_nested_fields').css('display', 'none');
    }
  }
}
else {
  $('#eventFormContainer').html("<%= escape_javascript(render(:partial => 'form_custom'))%>");
}

玩得开心......;)