繁体   English   中英

使用方法时,Rails link_to 会发送 POST 和 GET 请求::post

[英]Rails link_to sends POST and GET requests when you use method: :post

我尝试通过以下方式通过 link_to 发送 POST 请求:

link_to 'go to transition', transition_diagnosis_path, method: :post

我的DiagnosisController有 action transition ,但是当我点击链接时,它会发送两个请求,一个 POST 和一个 GET。 第一个请求成功执行,但最后一个请求向show操作发送了一个未知参数,因此返回一个错误。

Started POST "/diagnosis/transition" for 127.0.0.1 at 2017-02-08 17:45:32 -0200
Processing by DiagnosisController#transition as HTML
  Parameters: {"authenticity_token"=>"XXXXXXXXXXXXX"}
Redirected to http://localhost:3000/analysis
Completed 302 Found in 1126ms (ActiveRecord: 128.0ms)

Started GET "/diagnosis/transition" for 127.0.0.1 at 2017-02-08 17:45:33 -0200
Processing by DiagnosisController#show as HTML
  Parameters: {"id"=>"transition"}
Completed 500 Internal Server Error in 975ms (ActiveRecord: 24.8ms)

有谁知道我应该做什么? 提前致谢。


更新:

当我尝试这样做时,它可以正常工作

link_to transition_diagnosis_path, method: :post do
  button_tag 'go to transition'
end

在执行操作之后,在诊断控制器中的转换方法中,有一个重定向将重定向您-这就是第二个get请求。

您可以摆脱重定向。 删除转换方法中看起来像这样的部分:

respond_to do |format|
    format.js { render :nothing => true }
    format.html { redirect_to home_url }
end

另外,只需确保您的路线已声明

post 'diagnosis/transition', to: 'diagnosis#transition'

就我而言,我忘记在Application.js加载jquery_ujs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM