我目前有几个部分包含不同 AR 模型的表单。我正在使用这些来构建仪表板样式的页面,因此我可以将 ajax 发布到 CRUD 控制器(而不是发布到仪表板控制器中的一堆不同操作)。
由于我使用 AR 来验证数据,我希望能够在 CRUD 控制器中使用正确的对象渲染正确的部分并将其用作我的响应。像这样的东西:
if @note.save?
flash[:notice] = "Note successfully saved!"
render '_note_form', :layout => false
else
flash[:notice] = "Something went wrong. Note was not saved!"
flash[:error] = @note.errors.full_messages.to_sentence
render '_note_form', :layout => false
end
然后我添加一个 js 函数来处理该响应,方法是用响应替换表单,如下所示:
$(function() {
$('form#new_note_form').bind('ajax:success', function(evt, data, status, xhr){
$("#new_note_form").replaceWith(xhr.responseText);
});
});
这给了我验证与我在标准帖子中看到的相同类型的验证,但只刷新部分页面而不是整个页面。
我不禁觉得有更好的方法来处理这个问题。我是否应该通过 json 传递错误/成功消息并在前端适当地处理它们?只替换整个表格是不好的做法吗?