Destroy方法已停止工作

时间:2011-05-01 21:57:50

标签: ruby-on-rails

我有两个模型:页面和作者,当我选择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

我应该在哪里寻找解决这个问题的方法,当我点击它时,它会将我semds to to destroy to destroy but no more,no:notice似乎似乎没有destroy方法。

谢谢

3 个答案:

答案 0 :(得分: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操作

答案 1 :(得分:0)

要了解的几件事情:

  • 目前尚不清楚您要向应用程序发送什么类型的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方法实现了什么,但它看起来不正确。它并不安静,它似乎返回了一系列页面而不是作者。

答案 2 :(得分:0)

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