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



我有一个我不明白的"wtf"问题。 我有一个视图,用户可以在其中看到他的所有图片。在每张图片上,都有一个用于删除图片的图标。此图标将打开一个模式,其中包含用于删除图片的链接。但是每个链接都会删除视图中的第一张图片。

最诡异的是:

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

怎么可能?

这是我观点的一部分:

_gallery.苗条

.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.苗条

.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.苗条

.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

你发现我的代码有问题吗?

您正在为多个模态使用一个id标识符:

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

正在渲染多个模态,但在单击删除图标时,您始终以"第一个"为目标。

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