我正在为我的模型创建一个管理页面,我注意到如果在您的新表单和编辑表单中存在错误,则会从URL中删除/new
例如,如果我的URL是/my_model/new
如果出现错误,则将其更改为/my_model
有什么办法来解决这个问题,因为我写的自定义JavaScript的基础上的网址,如果它是新的做一些事情,如果它的编辑做其他事情
如果有人知道怎么修复请告诉我
更新:
我应该提供更多的信息,我在做什么,是什么导致了这个问题,所以我有一个模型,我正在创建一个管理页面使用ActiveAdmin宝石
这是我的模型
class Task < ApplicationRecord
validates :count, numericality: { greater_than_or_equal_to: 1, less_than_or_equal_to: 99 }, allow_nil: true
end
我的管理页面看起来像这样:
ActiveAdmin.register Task, as: "Tasks" do
actions :all, except: [:destroy]
menu label: "Tasks", parent: "Tasks Menu"
permit_params :name, :count
index do
id_column
column :name
column :count
end
show do
tabs do
tab :basic do
attributes_table do
row :name
row :count
end
end
end
end
form do |f|
f.semantic_errors *f.object.errors.keys
f.inputs "Basic Details" do
f.input :name
f.input :count
f.actions
end
end
end
因此,当您打开一个项目或尝试创建或更新任务时,URL将转到/admin/tasks/new或/admin/tasks/edit
所以我需要根据URL使用JQuery做一些修改,所以我为此做了一个脚本,看起来像这样:
var window_location_elements = location.href.split("/");
var length = window_location_elements.length;
if(window_location_elements[length-1] === "edit" || window_location_elements[length-1] === "new"){
// do something
}
所以现在问题发生了,当我们说我在我的输入中输入了一个无效的count值时,我的表单中有一个错误,它被完美地显示出来,但奇怪的是,一旦出现错误,URL就会切换:
/admin/tasks/new to just /admin/tasks(编辑时相同)
1条答案
按热度按时间owfi6suc1#
这是我的一个错误,我只是想让我的JavaScript工作,因为我只是将新建和编辑表单与URL相关联,但这不是ActiveAdmin处理表单创建和更新,因为在Rails中,如果表单无效,我们会再次呈现表单并将其作为无效表单提交的响应发送。
记住这一点,并阅读更多关于这一点,我发现ActiveAdmin更新DOM的
body
元素,让服务器知道它是哪种形式。接下来唯一需要做的就是更新我的JavaScript来处理这个问题,这是最终的javascript。