Javascript 如何使用初始化模型作为模式打开的唯一标识符?

Javascript 如何使用初始化模型作为模式打开的唯一标识符?,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我有一个表单,它有一个用于的字段,其中有多条循环记录。每个记录使用一个打开的模式,然后用于添加表单条目。我的问题是,为了打开模式,我需要使用唯一标识符。在创建“main”forms记录之前,我没有ID用作唯一标识符。我尝试使用唯一的初始化版本,但它不会打开模型。我假设是因为初始化的记录中有一个# 在创建记录时,我可以使用此ID。但我的问题是初始化记录: 我的控制器: @shop_product = ShopProduct.find_or_initialize_by() 表格摘要: <%=

我有一个表单,它有一个用于的
字段,其中有多条循环记录。每个记录使用一个打开的模式,然后用于添加表单条目。我的问题是,为了打开模式,我需要使用唯一标识符。在创建“main”forms记录之前,我没有ID用作唯一标识符。我尝试使用唯一的初始化版本,但它不会打开模型。我假设是因为初始化的记录中有一个
#

在创建记录时,我可以使用此ID。但我的问题是初始化记录:

我的控制器:

@shop_product = ShopProduct.find_or_initialize_by()
表格摘要:

<%= form_for @shop_product do |f| %>
    <%= f.fields_for :shop_product_print_files do |ff| %>
    <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal-<%= "#{ff.object.print_location.id}" %>_<%= "#{@shop_product}" %>"  id="printLocationId_<%= "#{ff.object.print_location.id}" %>(<%="#{ff.object.print_location.id}"%>)">
        Choose Image
    </button>
    <div class="modal fade" id="myModal-<%= "#{ff.object.print_location.id}" %>_<%= "#{@shop_product}" %>" tabindex="-1" role="dialog" data-keyboard="false">
    </div>
    <% end %>
    <%= f.submit "Sync" %>
<% end %>

选择图像
这意味着:

^这显示了按钮和模式之间的关系。有很多模态,所以我需要一个唯一的模态,以便模态打开到正确的关联

创建记录后,我可以使用
@shop\u product.id
,它会正常工作。有没有办法在新产品上使用
@shop\u product
来获得唯一的标识符

我正在标记javascript,以防有一个想法或方法基于
@shop\u产品
初始化创建唯一标识符。如果有任何您想帮助解决的信息,请告诉我

尝试此代码

<%= form_for @shop_product do |f| %>
    <% shop_product_id = @shop_product.object_id %>
    <%= f.fields_for :shop_product_print_files do |ff| %>
        <% print_location_id = ff.object.print_location.id%>
    <button
        type="button"
        class="btn btn-primary"
        data-toggle="modal"
        data-target="#myModal-<%= print_location_id %>_<%= shop_product_id %>"
        id="printLocationId_<%= print_location_id %>(<%= print_location_id %>)"
    >
        Choose Image
    </button>
    <div
        class="modal fade"
        id="myModal-<%= print_location_id %>_<%= shop_product_id %>"
        tabindex="-1"
        role="dialog"
        data-keyboard="false">
    </div>
    <% end %>
    <%= f.submit "Sync" %>
<% end %>

选择图像
  • 首先,不要使用
    @shop\u product
    ,因为这是一个对象。如果您需要一个引用,但它还没有id,
    object\u id
    将为您提供一个唯一的标识符
  • 如果您需要一次又一次地创建/使用相同的东西,您可以在modal中创建一个方法,或者在块内的变量中提取值
  • 如果您不需要
    print\u location
    ,则不需要执行
    ff.objec.print\u location.id
    ,它将查询
    print\u location
    。而是使用
    打印位置id
  • 不要像这样使用不必要的字符串插值,而只使用简单的erb代码,如
  • 试试这个代码

    <%= form_for @shop_product do |f| %>
        <% shop_product_id = @shop_product.object_id %>
        <%= f.fields_for :shop_product_print_files do |ff| %>
            <% print_location_id = ff.object.print_location.id%>
        <button
            type="button"
            class="btn btn-primary"
            data-toggle="modal"
            data-target="#myModal-<%= print_location_id %>_<%= shop_product_id %>"
            id="printLocationId_<%= print_location_id %>(<%= print_location_id %>)"
        >
            Choose Image
        </button>
        <div
            class="modal fade"
            id="myModal-<%= print_location_id %>_<%= shop_product_id %>"
            tabindex="-1"
            role="dialog"
            data-keyboard="false">
        </div>
        <% end %>
        <%= f.submit "Sync" %>
    <% end %>
    
    
    选择图像
    
  • 首先,不要使用
    @shop\u product
    ,因为这是一个对象。如果您需要一个引用,但它还没有id,
    object\u id
    将为您提供一个唯一的标识符
  • 如果您需要一次又一次地创建/使用相同的东西,您可以在modal中创建一个方法,或者在块内的变量中提取值
  • 如果您不需要
    print\u location
    ,则不需要执行
    ff.objec.print\u location.id
    ,它将查询
    print\u location
    。而是使用
    打印位置id
  • 不要像这样使用不必要的字符串插值,而只使用简单的erb代码,如

  • 除了创建唯一id的方法外,我只能考虑在向记录添加属性之前先创建记录,然后再设置状态。除了创建唯一id的方法外,我只能考虑在向记录添加属性之前先创建记录,然后再设置状态。