麻烦删除对象的方法RAILS

问题描述 投票:0回答:1

我正在用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}正在着陆。

我有什么问题?

ruby-on-rails ruby routing routes crud
1个回答
0
投票
[动作视图表单助手。传递真实性令牌并解决此问题。
© www.soinside.com 2019 - 2024. All rights reserved.