我正在尝试销毁数据库中的记录,但是我收到了一个我不明白的错误:
未定义的方法`id'为0:视图中的Fixnum
以下是我的观点:
<%= form_for(:subject, :url => { :action => 'destroy' , :id => @subject.id }) do %>
<h2> Are you sure you want to delete <%= @subject.name %> ? </h2>
<div class="form-buttons">
<%= submit_tag("DELETE") %>
<% end %>
控制器操作:
def delete
@subject = Subject.delete(params[:id])
end
def destroy
@subject = Subject.delete(params[:id]).destroy
redirect_to(:action=> 'index')
end
答案 0 :(得分:0)
控制器操作:
{{1}}
答案 1 :(得分:0)
与评论等相反,您有correct syntax,但有一点问题:
def destroy
@subject = Subject.delete params[:id]
redirect_to :index
end
您的delete
操作是Red Herring,应该从控制器中删除(其语法正确,但未使用)。
以上代码应该有效。您的错误是您在不支持它的对象上调用destroy
(实例方法)。如果您想使用.destroy
,则必须在Subject
类的实例上使用它:
@subject = Subject.find params[:id]
@subject.destroy
正如您在上面的代码中所做的那样,Subject.delete params[:id]
方法可以正常运行,因为它是类方法。但是,您必须知道.delete
没有调用任何回调。