【问题标题】:turbolinks / redirects after a delete删除后的 turbolinks / 重定向
【发布时间】:2018-04-22 09:30:41
【问题描述】:

通过 js 处理删除响应后,我正在通过 turbolinks 重新加载当前页面。换句话说:

// onclick setup encapsulates the following
axios({
  method: "delete",
  url: e.target.getAttribute("href"),
  headers: Csrf() // passes the csrf token to keep things 'rails'
}).then(() => {
  Turbolinks.visit(locationWithoutHash, { action: "replace" });
});

我们的退出链接是这样处理的。

注销然后重定向到 root_url。

问题是,Turbolinks.visit 似乎保留了初始方法:

Started DELETE "/auth/sign_out" for 127.0.0.1 at 2018-04-22 11:21:12 +0200
Processing by Devise::SessionsController#destroy as HTML
...stuff
Redirected to http://demodemo.lvh.me:3000/
Completed 302 Found in 11ms (ActiveRecord: 1.9ms)


Started DELETE "/" for 127.0.0.1 at 2018-04-22 11:21:12 +0200
ActionController::RoutingError (No route matches [DELETE] "/"): etc...

这可能只是我无法在源代码中发现的语法/语法问题

如果不讨论这种行为是否有意义,是否可以为 Turbolinks.visit 指定一个方法以确保它有效地通过 GET ? (因为我只是用它来重新加载当前页面,不管发生什么,它总是一个 GET)

【问题讨论】:

    标签: javascript ruby-on-rails devise axios turbolinks


    【解决方案1】:

    destroy 方法在删除redirect_to request.referer 或任何类似这样的URL 之后发生这种情况,如果你有这样的然后更改为这样

    def destroy
        @obj = Model.find(params[:id])
    
        respond_to do |format|
            if @obj.destroy
                flash[:error] = 'Deleted'
                format.html { redirect_to request.referer, status: 303  }
                format.js { redirect_to request.referer, status: 303  }
            end
        end
    end
    

    我认为这会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 2013-08-11
      • 2020-10-10
      • 1970-01-01
      相关资源
      最近更新 更多