控制台和视图之间的值不同

时间:2018-09-21 13:09:46

标签: ruby-on-rails ruby

我有一个我不了解的“ wtf”问题。 我有一个视图,用户可以看到他的所有图片。每张图片上都有一个删除图片的图标。此图标会打开一个模态,其中有一个链接可以删除图片。但是每个链接都会删除视图中的第一张图片。

最奇怪的是:

= picture_path(picture)
# => path of the first picture

- puts picture_path(picture)
# => path of the right picture

怎么可能?

这是我观点的一部分:

_gallery.slim

.row
  - pictures.each do |picture|
    .col-xs-10.col-xs-offset-1.col-sm-6.col-sm-offset-0.col-md-4.col-lg-3
      # Some code
        .caption id="pictures-#{picture.id}"
          .row
            - if current_user == @user
              = render 'pictures/form_position', picture: picture # => Here we go

_form_position.slim

.caption-edit.d-block
   .col-lg-6.col-md-6.col-xs-6
      div
         span> Position
         span.hide-if-edit
            => picture.position
         span.icon.icon-edit.picture-position-icon.hide-if-edit
         span.icon.icon-delete.hidden.picture-position-icon.position-form data-toggle= 'modal' data-target= '#delete-picture-modal'
         = render 'pictures/destroy_picture_modal', picture: picture # => My modal
   .col-lg-6.col-md-6.col-xs-6.position-form.hidden
      = simple_form_for picture, remote: true do |f|
         = hidden_field_tag(:position)
         = f.input :position, wrapper: :vertical_input_group, label: false do
            = f.input_field :position, value: picture.position, class: 'form-control'
            .input-group-btn
               = button_tag type: 'submit', class: 'btn btn-primary' do
                  i.icon.icon-check

_destroy_picture_modal.slim

.modal.fade#delete-picture-modal tabindex= '-1' role= 'dialog' aria-hidden= 'true'
   .modal-dialog role= 'document'
      .modal-content
         .modal-header
            button type="button" class="close" data-dismiss="modal" ×
            h5.modal-title Delete the picture
         .modal-body
            p Are you sure?
         .modal-footer
            = button_tag 'Cancel', type: 'button', class: 'btn btn-secondary', data: { dismiss: 'modal' }
            = link_to picture_path(picture), method: :delete do # => Where there's a problem
               = button_tag 'Delete', type: 'button', class: 'btn btn-primary'

我提醒您:

= picture_path(picture)
# => return the path of the first picture

- puts picture_path(picture)
# => return the right path

您在我的代码中看到错误了吗?

1 个答案:

答案 0 :(得分:3)

您将一个id标识符用于多个模态:

data-target= '#delete-picture-modal'

正在渲染多个模态,但是单击删除图标时,您始终将目标定位为“第一个”。

您需要为每个模式分配唯一的ID,并相应地定位它。 (或者,通过一些异步javascript来填充模式。)