ruby-on-rails - 覆盖 Controller 后如何在 activeadmin 表单中显示错误

标签 ruby-on-rails activeadmin

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

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

我想显示违反验证的错误,以便用户知道他/她是否输入了无效条目。

我找到了 this但它看起来更像是一种解决方法而不是解决方案。请帮我解决这个问题。

提前致谢。

最佳答案

我在名为 new.html.arb 的 View 中创建了一个新的 HTML 文件并添加 insert_tag renderer_for(:new)在里面。在那之后我所做的就是

if @company.errors.any?
  render 'new'
end

我是通过查看 activeadmin 的默认行为发现的。我希望这可以帮助其他想要做类似事情的人。这是我得到的结果,也是我所要求的。

Fields with validation errors.

关于ruby-on-rails - 覆盖 Controller 后如何在 activeadmin 表单中显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42460672/

相关文章:

ruby-on-rails - 如何在 ActiveAdmin 的嵌套自定义页面中创建 selectable_column?

ruby - 您如何处理 Active Admin 资源中的序列化编辑字段?

ruby-on-rails - 如何在 Rails 应用程序中重新排序表列?

ruby-on-rails - 没有面板的显示页面上的 ActiveAdmin 表单

ruby-on-rails - ActiveRecord select().where() 返回以 SELECT COUNT 开头的 SQL - 我不想要 COUNT

ruby-on-rails - 如何在 Rails 数据库迁移中恢复 'create_extension` 语句?

css - 如何在 Rails 4 中使用 css 中的打印样式?

ruby-on-rails - 如何在 ActiveAdmin 中实现多对多?

ruby-on-rails - rails : two models for one table

javascript - 在 Rails 上的 Ruby 方法中使用 JSON 输入