link_to删除,删除错误的记录

时间:2015-03-13 01:03:20

标签: ruby-on-rails rest iteration haml link-to

我遇到了最奇怪的问题!在我的RoR应用程序中,我有一个.each循环。每次迭代都有一个link_to"删除"对于那个特定的迭代:

- @evints.each do |e|
    .inteventimg
      = link_to e.event.name, e.event
      = e.id
      %br
      - if e.event.images.exists?
        = image_tag(e.event.images.find_by(:prime => true).location.full.url)
      %br
      - if current_user 
        = link_to "Delete #{e.id}", e, :method => :delete, data: {:confirm => 'Are you sure?'}

Evint是一个has_many中的连接表,通过Interest和Event之间的关系;在我展示的兴趣控制器中,我将@evints定义为@ interest.evints。

一切正常 - 正确的图像显示,正确的e.id出现在e.name旁边和"删除"链接本身;但始终如一,页面上的第一个evint被删除,而不是删除"删除"点击。我无法弄明白。 。 。有没有人有任何想法?

编辑:这里是Evint控制器的删除代码:

  def destroy
 @evint = Evint.find_by(params[:id])
 authorize @evint

if @evint.destroy
   flash[:notice] = "Your evint has been removed."
   redirect_to :back
else
  flash[:error] = "Evint couldn't be deleted. Please try again."
  redirect_to :back
end

谢谢。

1 个答案:

答案 0 :(得分:1)

您的控制器代码不正确:

@evint = Evint.find_by(params[:id])

应该是

@evint = Evint.find(params[:id])

@evint = Evint.find_by(id: params[:id])

实际上,生成的SQL将采用以下形式(假设params[:id]为123)

SELECT * from evints where (123) limit 1

哪个匹配数据库中的任何行