我正在使用模式中的验证来检查错误。工作正常,并显示错误消息(我使用调试器来确认这一点)。现在对我来说最棘手的部分来了。
现在,当验证失败时,我在代码中执行此操作:
def create
checked_segment_topics = params[:checked_segment_topics].split(",")
@menu = Menu.create_menu(checked_segment_topics, menuparams)
if @menu == true
redirect_to menus_path
else
redirect_to newmenu_path
end
end
因为我正在重定向到新 View ,所以不会显示错误消息。我尝试渲染,问题是它将 UUID 附加到表单的 id 上。因此我的 javascript 代码失败了。在提交表单之前,我必须找到表单 ID 来进行一些计算。
我的routes.rb文件的相关部分在这里:
get '/menus' => 'menus#index'
get '/newmenu' => 'menus#new'
resources :menus, only: [:new, :create, :edit, :update, :destroy]
有人可以引导我走向正确的方向吗?
最佳答案
实例变量不会在请求中持续存在。因此,如果您也不想为此使用 session ,那么我能想到的其他方法是将它们存储在数据库中而不运行验证。
def create
# some logic to build @menu
@menu.save(validate: false)
# some logic for redirection
end
然后,在所需的操作中获取它们并对其运行验证。
def new
# some logic to fecth @menu
@menu.valid?
# some logic to render @menu
end
关于javascript - 在重定向到新 View 时保留 Rails 验证中的错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38703640/