删除链接有问题吗?

时间:2010-05-24 01:32:49

标签: ruby-on-rails

当我点击我创建的删除链接时,它在控制器中没有做任何事情(甚至是flash [:notice]部分)。我不是叫.delete吗?部分正确? POST部分可以正常工作,我可以添加提示。

链接:

<%= link_to "Delete", :controller => "/admin", :action => "tips", :id => t.id, :method => :delete, :confirm => "Are you sure?" %>

管理控制器

def tips
  @tips = Tip.all
  if request.post?
    tip = Tip.new(params[:geek_tips])
    if tip.save
      flash[:notice] = "Saved!"
      redirect_to :action => "tips"
    else
      flash[:notice] = "Error!"
    end
  elsif request.delete?
    tip = Tip.find_by_id(params[:id])
    tip.delete!
    flash[:notice] = "Delete Message"
    redirect_to :action => "tips"
  end
end

1 个答案:

答案 0 :(得分:3)

除了设计问题,我认为您的:method选项被解释为查询参数。如果您将鼠标悬停在链接上,可以在URL中看到“方法”吗?

如果是,请尝试...

<%= link_to "Delete", {:controller => "/admin", :action => "tips", :id => t.id}, :method => :delete, :confirm => "Are you sure?" %>

请注意定义请求网址的部分周围的大括号。

关于设计:每次在一个控制器方法中有多个动作时,可能存在设计问题。在这种情况下,我会考虑使用专用的tips_controller控制器映射到您的Tip模型,而不是使用一个管理控制器方法来执行多个提示操作。

如果您使用RESTful路由,即在config.rb中设置...

map.resources :tips

...然后您可以使用tips_controller中的创建和销毁方法分别创建和删除提示。