我的错误消息是“错误的参数数量(0表示1)”
这一行:@post =我的
中的Post.destroyPostsController#destroy
我的模型是post.rb
我的帖子控制器在这里
class PostsController < ApplicationController
def new
@post = Post.new
end
def index
@posts = Post.all
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render 'new'
end
end
def post_params
params.require(:post).permit(:title, :text)
end
def show
@post = Post.find(params[:id])
end
def edit
@post = Post.find(params[:id])
end
def update
@post = Post.find(params[:id])
if @post.update(params[:post].permit(:title, :text))
redirect_to @post
else
render 'edit'
end
end
def destroy
@post = Post.find(params[:id])
@post = Post.destroy
redirect_to posts_path
end
end
在我看来,我有这段代码:
<%= link_to 'Destroy', post_path(post),
method: :delete, data: { confirm: 'Are you sure?' } %>
这就是我对请求中的参数所说的内容
{"_method"=>"delete",
"authenticity_token"=>"Pzsnxv8pt+34KIKpYqfZquDv3UpihkINGSJxomMNsW4=",
"id"=>"3"}
我到底做错了什么?
答案 0 :(得分:12)
您需要向ID
方法提供destroy
:
Post.destroy(params[:id])
如上所述:http://api.rubyonrails.org/classes/ActiveRecord/Relation.html#method-i-destroy
答案 1 :(得分:4)
这是你的问题:
@post = Post.destroy
在Ruby中你可以用这种方式破坏对象:
@post.destroy
另一个提示:当你在模型或控制器中使用变量时,通过不在它们前面添加@并将@ just用于需要全局使用的变量来将它们声明为locals。在此处了解更多相关信息: In what circumstances should I use instance variables instead of other variable types?
答案 2 :(得分:3)
确切地说错误是什么。
你可以:
destroy
,例如@post.destroy
Post.destroy(an_id)
答案 3 :(得分:2)
我想你想写一下:
@post.destroy