0

在我看来,我有一个删除操作的链接,如下所示:

<%= link_to 'Destroy', powersaving, :method => :delete, :data => { :confirm => 'Are you sure?' } %>

在我的控制器中,我有 before_filter

before_filter :authenticate_user!, :only => [:index, :show, :show_details, :destroy]

我也试过这样:

before_filter :authenticate_user!, :except => [:new, :create]

在删除操作中

def destroy
    if current_user.admin?
      @powersaving = Powersaving.find(params[:id]) 
      @powersaving.destroy  
    end

    respond_to do |format|
      format.html { redirect_to powersavings_url }
      format.json { head :no_content }
    end
  end

当我单击“删除”链接时,它显示“您确定吗?” 弹出窗口,点击 OK 进入 Devise 的登录页面。如果当前用户以“管理员”身份登录,我需要提供启用删除操作。我做错了什么?

4

2 回答 2

0

添加

<%= csrf_meta_tag %>

给你的application.html.erb

于 2019-03-15T09:24:57.277 回答
-1

事情是。除您的应用程序之外的所有 HTTP 方法都GET必须向服务器发送 CSRF 真实性令牌。
避免此问题的一种方法是进入application_controller.rb并注释该行protect_from_forgery。这只是使其立即工作的一种方法,因为不建议在没有 CSRF 检查的情况下离开您的应用程序。
稍后,您可以找到一种方法,在没有表单的情况下不检查链接和自定义操作上的 CSRF 令牌。

于 2012-07-20T12:27:20.213 回答