Rails3 - 给定一个允许更新/创建的表单 - 如何删除/销毁记录?

时间:2010-10-18 16:57:37

标签: ruby-on-rails ruby-on-rails-3

我有以下内容可以创建或更新记录:

<%=form_for [:project, @permission], :remote => true do |f| %>
... You can change roles in the form... (This works great for new or existing records)
<% end %>

在表单中,我想提供删除/销毁权限的选项。所以我补充道:

<%= link_to 'remove from the team', [:project, @permission], :confirm => 'Are you sure?', :method => :delete %>

但那不起作用,错误......

呈现如下:

<a rel="nofollow" data-method="delete" data-confirm="Are you sure?" href="/projects/4/permissions/useronproject">remove from the team</a>

错误讯息: PermissionsController#destroy中的NoMethodError 未命名的方法`destroy'代表nil:NilClass

传递的参数只是: _method删除 身份验证令....

所以我不确定Rails如何知道要删除什么?

关于permissionsController。我确实有一个命运:

def destroy

@permission.destroy

respond_to do |format|
  format.js
end

对此有什么看法?感谢

1 个答案:

答案 0 :(得分:0)

您的网址中的权限ID似乎不是整数,而是权限的名称(或永久链接)。

你有没有像

这样的东西
def to_param
  permalink
end

在您的权限模型中?

返回的错误告诉@permission设置为nil(表示没有找到具有此ID的权限)。在您的销毁操作中,您需要通过此固定链接/名称检索您的权限,例如:

def destroy
  @permission = Permission.find_by_permalink(params[:id])
  @permission.destroy
  respond_to do |format|
    format.js
  end
end