学了 hotwire,做了个练手的小项目,遇见一个常见的表单验证:
def create
if Tag.find_by(label: tag_params[:label])
render :new, status: :unprocessable_entity
else
@tag = Tag.create(tag_params)
respond_to do |format|
format.turbo_stream
end
end
end
这段代码先查询是否有相同 label 的 Tag,如果没有再创建新 Tag 并 turbo_stream 更新到页面上。
如果表单没有通过验证,则返回 422。这一步是从教程上抄下来的。
我先是在该控制器视图文件夹下创建了一个空的 new.erb.html。提交错误表单时返回的结果直接将网页全覆盖了。
然后将此模板改名为 new.turbo_stream.html,因为这个文件内什么操作都没有做,所以提交错误表单没有任何反应,算是正常了。
我不知道自己目前的做法是否正确,使用 turbo 时,对于常见的表单验证不通过应该怎么处理?只能另建一个别名的 turbo_stream 而没有更优雅的方式了吗?