Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 数字数组的rails字段必须具有不同的值_Arrays_Ruby On Rails_Distinct_Form For_Multiple Records - Fatal编程技术网

Arrays 数字数组的rails字段必须具有不同的值

Arrays 数字数组的rails字段必须具有不同的值,arrays,ruby-on-rails,distinct,form-for,multiple-records,Arrays,Ruby On Rails,Distinct,Form For,Multiple Records,我正在开发一个ruby on rails应用程序,其中我有一个名为categories的模型,其中有一个名为“order_point”的字段,尽管“order_point”字段不应该是每个记录的唯一(不同)值 我想创建一个表单,更新多条记录的order\u point属性,并且我想让表单只接受order\u point的输入值,前提是这些值不同 例如: 我有类别A、B和C,我想创建一个表单来立即输入和更新类别A、B、C,但如果输入的3个类别中任何一个的order_point值相同,则表单不应提交

我正在开发一个ruby on rails应用程序,其中我有一个名为categories的模型,其中有一个名为“order_point”的字段,尽管“order_point”字段不应该是每个记录的唯一(不同)值

我想创建一个表单,更新多条记录的order\u point属性,并且我想让表单只接受order\u point的输入值,前提是这些值不同

例如:
我有类别A、B和C,我想创建一个表单来立即输入和更新类别A、B、C,但如果输入的3个类别中任何一个的order_point值相同,则表单不应提交(例如A=3、B=2、C=2)

我创建了一个表单,可以使用嵌套在字段中的f.number\u字段一次更新多个记录值,以下是我的代码:

<section class="container page-container">
  <table class="table">
    <thead>
      <tr>
        <th>Name</th>
        <th>Arabic Name</th>
        <th>Order Strength</th>
        <th colspan="3"></th>
      </tr>
    </thead>

    <tbody>
      <%= form_tag admin_category_submit_order_categories_path, method: :post do %>
        <% @categories.each do |category| %>
          <tr>
            <td><%= category.name %></td>
            <td><%= category.ar_name %></td>
            <td>
              <%= fields_for "categories[]", category do |f|%>
                <%= f.number_field :order_point, value: category.order_point, in: 1...@categories.count+1 %>
              <% end %>
            </td>
          </tr>
        <% end %>

        <div class="col-md-12">
          <%= submit_tag("Update", { class: "btn btn-primary pull-right"}) %>
        </div>
      <% end %>
    </tbody>
  </table>
</section>

名称
阿拉伯名称
订单强度
下面是一个屏幕截图:

知道顺序强度是顺序点属性


有任何解决方案吗?

“我想创建一个表单,以便立即输入和更新类别a、B、C,但如果输入的3个类别中任何一个类别的order_point值相同,则该表单不应提交”。如果要阻止表单提交,需要使用javascript将事件侦听器附加到提交事件。至于问题的其余部分,我已经读了两遍,但仍然没有真正理解你想要做的事情。你能简要介绍一下用户情况吗?我觉得您可能需要的是平均的拖放重新排序设置。确切地说,我希望存储这些值以便对类别记录进行重新排序,因此我希望在order_point属性上为每个类别指定一个唯一的值,范围从1到类别数,这不应该应用于所有类别,而是应用于特定类型的类别,因此唯一性验证不能应用于类别模型,因此有3种解决方案1。添加一个事件监听器(一个我不喜欢的涉及JS的解决方案)2。检查提交的值数组是否唯一,如果是,则更新,否则将用户发送到编辑第3页。在form_for或f.field_编号的级别上进行某种验证,确保form_for内的所有field_编号输入都不同,我正在搜索,如果有这样的验证程序,这将是最简单的解决方案,这里没有现成的解决方案。通常,通过将对象包装到另一个模型中并使用
接受嵌套的属性来完成这类操作。我将设置一个虚拟模型(一个包含
ActiveModel::model
模块的类),并将表单和传入参数绑定到该模型,并添加自定义验证。这将是一个漫长的过程,需要付出巨大的努力才能得到答案,但至少你们有一个研究的起点。