问题描述
|
我有两种模型:页面和作者,当我选择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方法要实现的目标,但是看起来不正确。它不是很安静,它似乎返回的是页面数组,而不是作者页面。