我正在寻找有关在Ruby / Rails中的表单提交上实现弹出式窗口/模态的最佳方法的建议。
我有一个简单的表单,带有一个提交按钮,该按钮可以按预期工作(更新数据库中的相关字段)。
我还有其他要求:根据输入到表单的信息,提交表单时应该有一个模式/弹出窗口。对此的不同要求的概述如下:
当某些字段被更新但信息与先前的更新冲突时(例如,日期字段被更新,但是先前已经设置了另一个日期),将出现带有错误的弹出窗口/模式,并且单击“确定”时,将返回到表单,并且任何输入仍然存在(即不刷新表单)。三种不同的情况具有三种不同的错误类型,因此需要三种不同的错误消息。
当某些字段被更新而其他字段保留为空白时,弹出窗口/模态带有“您确定吗?”出现类型信息。同样,存在三种不同的情况,因此需要三种不同的消息。将有“取消”和“确定”按钮:“取消”将返回到表单,而任何输入仍将保留,“确定”将提交表单。
最后,如果更新表单时没有出现任何问题(即以上都不是),则表单将没有弹出/模式提交(即标准表单提交)。
我已经研究了创建模态的方法,但是由于我有七个不同的场景/要求,我正在努力寻找一种合适的方法来实现这一点。首先想到的是,将会有很多if语句,但是我认为必须有一种更有效的方法来执行它。我看过的代码中有几个模式(在我接手项目之前就完成了),它们使用button_tag,但是我不知道我是否要在表单中使用相同的格式。 / p>
答案 0 :(得分:0)
对于第一种情况,您可以考虑在ActiveRecord模型https://guides.rubyonrails.org/active_record_validations.html#custom-methods上实现自己的验证。表单数据是通过AJAX提交的,请检查您的JSON响应是否有错误,并显示包含错误的模式(如果有)。
对于第二种情况,我将添加客户端验证。提交表单时让JS检查字段,如果它们为空,则显示“您确定吗?”模态如果他们单击“是”,那么我们转到方案一检查是否有任何错误。
最后,如果表单提交成功,请通过JS清除所有字段并显示成功消息。