使用RJS Rails进行表单验证

时间:2011-03-30 12:07:35

标签: ruby-on-rails ajax rjs remote-forms

我有一个使用remote_form_for标记提交的表单。

查看

<% form_remote_tag(:url => { :action => 'create' })  do %>

a bunch of fields

<% end %>

控制器

def create 

  if @greeting.can_save?
   respond_to do |format|
   format.html {redirect_to board_link(@board)}
   format.js #close the iframe and reload the parent
   end
  else
   respond_to do |format|
   format.html {redirect_to :action => 'new'}
   format.js #show the errors on the form
   end
  end
end

create.rjs

page << "parent.$.fancybox.close();"

对于提交的表格,所有信息都正常。但我需要显示无效提交的错误消息。

如果表单未通过验证,如何在表单上显示错误消息?

提前致谢。

1 个答案:

答案 0 :(得分:0)

将表单拉出到自己的部分,在页面中呈现部分,为表单提供唯一的ID。

在表单标记内,您应该以任何方式呈现错误,无论是列出它们还是向受影响的字段添加类。

现在在您的RJS中执行以下操作:

if @greeting.valid?
  page << "parent.$.fancybox.close();"

else
  page.replace 'my_form_id', :partial => 'greetings/form'
end

如果出现错误,将重新呈现表单。确保将@greeting实例变量传递给此表单,以便正确填充字段。