2011-05-01 99 views
0

我有两种模式:页面和作者,当我选择销毁方法时,它只是返回显示页面。通过告诉模型作者has_many:页面和页面属于许多作者链接模型。销毁方法已停止工作

这是我的页面控制器代码:

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 

我应该在哪里寻找解决这个问题,当我击中摧毁它semds我的页面破坏,但仅此而已,没有:显示通知它似乎没有销毁方法。

谢谢

回答

1

我不知道你的

的意思选择销毁方法

但我假设你刚刚访问pages/:id网址在浏览器吗?这就是你所说的show行动。

为了实际销毁您的模型(即访问控制器中的destroy动作),您需要发送DELETE/pages/:id

<%= link_to 'Destroy', @page, :confirm => 'Are you sure?', :method => :delete %> 

注意:method => :delete

这是使用像通常完成。这实际上将发送DELETE控制器(假设你有你的rails.js包括照顾这一点),从而映射到destroy行动,而不是show行动

+0

我删除了它..... Ahhhhhhh !!!! – StudentRik 2011-05-01 22:24:36

0

几件事情来看待:

  • 目前尚不清楚您发送到应用程序的HTTP请求类型。 show动作似乎被触发的事实使我认为你的请求是一个HTTP GET方法。如果您想要调用destroy操作,请确保它是HTTP DELETE方法。

  • 您是否检查过数据库以查看ActiveRecord是否已被销毁?这可能是因为您没有设置Flash通知消息,因此您没有看到任何通知。例如:


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 
  • 在一个单独的说明,不知道你是什么努力实现与您的控制器笔者方法,但它看起来不正确。这不是宁静,它似乎返回一组页面而不是作者。
0

您是否在浏览器中禁用了JavaScript? :)