我无法使用有效路线销毁对象。浏览器返回No route matches [POST] "/blog/topics/3/posts/1"
。但是,我可以在同一资源上执行所有其他操作。我的控制器,模板看起来应该如何创建并从控制台中销毁对象?
节省时间 - 这些路线在我当前的配置下无效:
这是我的控制器:
class Blog::PostsController < ApplicationController
before_filter :fetch_topic, except: [:index]
before_filter :fetch_post, except: [:create, :new]
#stuff that works.
..
..
..
def destroy
@post.destroy
respond_to do |format|
format.html { redirect_to blog_topic_posts_url, notice: 'Post deleted.'}
end
#DOES NOT work: redirect_to root_url([:blog, @topic, @post]), notice: 'Post deleted.'
end
private
def fetch_post
@post = @topic.posts.find(params[:id])
end
def fetch_topic
@topic = Topic.find(params[:topic_id])
end
以下是我的模板:
<%= link_to 'Destroy', blog_topic_post_path(@topic, @post), method: :destroy, confirm: 'You Sure About This?' %>
答案 0 :(得分:3)
我认为您的link_to可能有误。查看RoR API link_to选项应该类似于:method => :delete, :confirm => "Are you sure?"
。
此外,您的:fetch_post
过滤器未针对操作destroy
投放,因此您不会@post
或@topic
,因为{{1}也没有被调用。
答案 1 :(得分:0)
应为method: :delete
。