我有一个我不了解的“ 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
您在我的代码中看到错误了吗?
答案 0 :(得分:3)
您将一个id
标识符用于多个模态:
data-target= '#delete-picture-modal'
正在渲染多个模态,但是单击删除图标时,您始终将目标定位为“第一个”。
您需要为每个模式分配唯一的ID,并相应地定位它。 (或者,通过一些异步javascript来填充模式。)