【问题标题】:Rails Callback - how to stop submit if condition foundRails Callback - 如果找到条件如何停止提交
【发布时间】:2016-09-09 17:24:19
【问题描述】:

保存记录时,我需要停止在表单上提交并抛出错误消息(我使用 simple_form)。

条件是当annotation.active为用户想要保存的记录设置为真,而另一个注释记录存在annotation.active为真且以下字段具有与用户想要的记录相同的值要保存,则不应保存/更新记录。

annotation.company
annotation.documenttype

我是 ruby​​ / rails 新手(我的第一个应用程序)。在对记录的字段使用基本的 rails 验证时(例如存在为 true),如何使用 rails 回调或验证来处理上述检查?

更新

我一直在阅读有关回调的指南,我认为我需要在我的“注释”模型中编写一个方法(在创建、保存和更新时调用),该方法返回完全错误。现在,我有这些问题:

  1. before_和around_有什么区别?
  2. 是否有一个回调(before_save 或 around_save ?),我可以使用而不是为每个方法列出多个回调?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    您可以像这样检查提交条件:

        <script>
          $("form").submit(function (e) {
            if(!annotation.active){ //Your condition to check
               e.preventDefault();
            }
          });
        </script>
    

    在您的html.erb 文件中使用此代码..

    如果你需要使用 Rails,你可以使用这个:

    submit_tag "Pay", :disabled => !annotation.active
    

    <%= button_to "Submit", "#", :disabled => !annotation.active %>
    

    【讨论】:

    • 那将是 jquery。我想使用 rails / ruby​​。
    • 嗨 Gokul,想知道您是否可以帮助我按照验证指南进行 Rails 验证。
    【解决方案2】:

    这可以使用类方法 'validates_uniqueness_of' 解决

    特别是:

    validates_uniqueness_of :active, scope: [:documenttype, :company]
    

    参见 ruby​​ api 文档1

    【讨论】:

      猜你喜欢
      • 2012-06-26
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多