查看对象的页面上的“link_to:method =>:delete”

时间:2010-02-04 17:52:00

标签: ruby-on-rails

我希望在我的Ruby on Rails项目中查看对象的页面上有一个“删除”链接。我遇到了问题

<%= link_to "Delete", @member, :confirm => 'Are you sure?', :method => :delete %>
当方法运行时,

加载它所在的页面,从而尝试加载不存在的对象。删除对象后,我想返回索引页面。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

问题出在你的控制器上。

确保销毁操作重定向到索引,你应该没问题。

如果您使用脚手架来生成控制器,那么这应该已经为您完成了。 例如:

class MembersController < ApplicationController
  ...

  def destroy
    @member = Member.find(params[:id])
    @member.destroy
    respond_to do |format|
      format.html{ redirect_to members_url}
      format.xml { head :ok}
    end
  end
end

答案 1 :(得分:1)

在我的项目中,我倾向于在我的控制器中创建一个找到对象的before_filter,如果它不存在,它会自动重定向回一个带有错误消息的默认索引URL,就像这样:

def find_object
  @object = Object.find(params[:id])
rescue ActiveRecord::RecordNotFound => e
  flash[:error] = "Sorry, that object was not found. Please try again."
  redirect_to objects_path
end

在控制器中销毁对象后,您仍然需要进行重定向,但至少可以避免用户意外删除/查看不存在的对象并抛出异常。