我遇到了最奇怪的问题!在我的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
端
谢谢。
答案 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
哪个匹配数据库中的任何行