销毁方法已停止工作

问题描述

| 我有两种模型:页面和作者,当我选择destroy方法时,它仅返回显示页面。通过告诉模型作者has_many:pages并且该页面属于许多:author来链接模型。 这是我的页面控制器的代码
class PagesController < ApplicationController

def index
@pages = Page.find(:all,:order => \'created_at DESC\')
end

def show
@page = Page.find(params[:id])
end

def new
@page = Page.new
end

def edit
@page = Page.find(params[:id])
end

def create
@page = Page.new(params[:page])

if @page.save
      redirect_to(@page,:notice => \'Page was successfully created.\')
  else
      render :action => \"new\"
  end
end

def update
@page = Page.find(params[:id])

  if @page.update_attributes(params[:page])
    redirect_to(@page,:notice => \'Page was successfully updated.\')
  else
    render :action => \"edit\"
  end
end

def destroy
@page = Page.find(params[:id])
@page.destroy
end

def author
@pages = @author.pages
end

end
我应该在哪里解决这个问题,当我点击destroy时,它会将我塞到要销毁的页面,但仅此而已,没有:notice似乎只是没有destroy方法。 谢谢     

解决方法

我不知道你是什么意思   选择销毁方法 但是我假设您只是在浏览器中访问
pages/:id
网址?如您所说,这是“ 2”动作。 为了实际破坏模型(即访问控制器中的
destroy
动作),您需要向
/pages/:id
发送一个
DELETE
。 通常使用以下方法完成此操作:
<%= link_to \'Destroy\',@page,:confirm => \'Are you sure?\',:method => :delete %>
注意ѭ7。这实际上将向控制器发送一个
DELETE
(假设您已经包含了rails.js来处理此问题),因此映射到
destroy
动作而不是map2ѭ动作。     ,您是否在浏览器中禁用了JavaScript? :)     ,需要注意的几件事: 目前尚不清楚您要发送给应用程序的HTTP请求类型。 show动作似乎已被触发的事实使我认为您的请求是HTTP GET方法。如果要调用destroy操作,请确保它是HTTP DELETE方法。 您是否检查过数据库以查看ActiveRecord是否已被破坏?可能是因为未设置快速通知消息,所以您没有看到任何通知。例如:
def destroy
  @page = Page.find(params[:id])
  flash[:notice] = \"Page successfully removed\" 
  @page.destroy
  # You may also want to have a redirect here,e.g. redirect_to @pages
end
另外,不确定在控制器中使用author方法要实现的目标,但是看起来不正确。它不是很安静,它似乎返回的是页面数组,而不是作者页面。