我有两个模型:页面和作者,当我选择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方法。
谢谢
答案 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
答案 2 :(得分:0)
您是否在浏览器中禁用了JavaScript? :)