我正在用Ruby on Rails创建一个Pinterest克隆。目前,我正在设置CRUD方法和路由。创建,读取,更新全部正常。我在使用DELETE / DESTROY时遇到麻烦。错误是InvalidAuthenticity,但是通过关闭protect_from_forgery
,我可以看到pin
的值为空,这就是真实性失败的原因。这是我的代码。不知道为什么我无法传递图钉值。
当前代码状态:https://github.com/dustin-longenecker/rails-pinning-app
show.html.erb我意识到有两个按钮,因为我一直在尝试这两个按钮。
<form action="<%= "/pins/#{@pin.id}" %>" method="post">
<input type="hidden" name="_method" value="delete" />
<button class="btn btn-danger" type="submit">
Delete
</button>
</form>
<%= link_to "Delete", pin_path(@pin), :confirm => "Are you sure?", :method => :delete %>
pins_controller.rb
def destroy
#@pin.delete(pin_params)
pin = Pin.find(params[:id])
pin.destroy(pin_params)
redirect_to root_path, :notice => "Your patient has been deleted"
end
def pin_params
params.require(:pin).permit(:title, :url, :slug, :text, :category_id)
end
routes.rb
delete "/pins/:id" => "pins#destroy"
跟踪
app/controllers/pins_controller.rb:55:in `pin_params'
app/controllers/pins_controller.rb:48:in `destroy'
因此,似乎destroy
方法已被正确调用,但pin
实例未传递。路线/pins/#{id}
正在着陆。
我有什么问题?