Ruby on rails 如何在重写控制器后在activeadmin窗体中显示错误

Ruby on rails 如何在重写控制器后在activeadmin窗体中显示错误,ruby-on-rails,activeadmin,Ruby On Rails,Activeadmin,我有一个需要覆盖activeadmin中创建的情况。我自动填充字段,如果数据已经存在,它应该更新,否则创建。以下是我的创建方法: def create id = params[:company].dig(:id) if id.present? @company = Company.find(id) if @company.update(permitted_params[:company]) redirect_to res

我有一个需要覆盖activeadmin中创建的情况。我自动填充字段,如果数据已经存在,它应该更新,否则创建。以下是我的创建方法:

def create
      id = params[:company].dig(:id)
      if id.present?
        @company = Company.find(id)
        if @company.update(permitted_params[:company])
          redirect_to resource_url
          flash[:notice] = 'Company created successfully'
        else
          #add errors to semantic errors
        end
      else
        new_permitted_params = permitted_params[:company].except(:id)
        @company = Company.new(new_permitted_params)
        @company.save
        if @company.errors.any?
          #add this to semantic errors so that activeadmin handles and displays the errors
        end
     end
  end
我想显示违反验证的错误,以便用户知道他/她是否输入了无效条目

我发现了,但它看起来更像是一个解决办法,而不是一个解决方案。请帮我解决这个问题


提前感谢。

我在名为
new.HTML.arb
的视图中创建了一个新的HTML文件,并在其中添加了(:new)的
插入标签渲染器。在那之后我所做的就是

if @company.errors.any?
  render 'new'
end
我通过查看activeadmin的默认行为发现了它。我希望这能帮助其他想做类似事情的人。这是我得到的结果,也是我所需要的


我想知道客户端逻辑是否根据id提交到不同的URL?可能会让事情变得更平静。

让我给你解释一下我为什么这么做。我已经在这个表单上应用了自动完成,我正在用我收到的数据设置所有字段。这就是逻辑发挥作用的地方。如果设置了ID(如果在“自动完成”中未选择对象,则不会设置ID),则以其他方式更新创建。在调用
渲染:新建之前,您可能需要设置
@resource=@company