作为 Ruby on Rails 的新手,我坚持使用过滤器检查来呈现 nested_form_for 字段。嵌套表单模型中已经有一些数据,这些数据被称为默认数据。现在在编辑模型时,我需要设置只读功能,并且不想在这些默认数据上设置任何删除链接。模型“is_default”中有一个字段实际上表示记录是否为默认值。那么我怎样才能只过滤那些数据呢?请任何人都可以把我拉出来。
提前致谢
作为 Ruby on Rails 的新手,我坚持使用过滤器检查来呈现 nested_form_for 字段。嵌套表单模型中已经有一些数据,这些数据被称为默认数据。现在在编辑模型时,我需要设置只读功能,并且不想在这些默认数据上设置任何删除链接。模型“is_default”中有一个字段实际上表示记录是否为默认值。那么我怎样才能只过滤那些数据呢?请任何人都可以把我拉出来。
提前致谢
分享我是如何做到这一点的......
在我的部分渲染文件中,我使用了实际需要的 edit.js.erb,因为我需要使用 AJAX 调用加载所有内容。所以在这一部分中,我添加了额外的 JQuery 代码来设置只读值并隐藏删除锚点。下面是我的代码...
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'))%>");
}
玩得开心... ;)