Rails路由执行两次
Rails route executing twice
我在轨道上的路由是每次点击执行两次。首先,路由如下-(它是集合中执行两次的print_cert路由):
resources :acd_certificates, only: [:edit, :update] do
collection do
get :print_cert, defaults: { format: 'pdf' }
end
end
从编辑表单中调用:
<div class="form-actions">
<%= f.submit "Save Certificate", class: "btn btn-primary" %>
<%= link_to print_cert_acd_certificates_path, class: "btn btn-primary" do %>
<span class="glyphicon glyphicon-print"></span> Print
<% end %>
<%= link_to 'Cancel', @client, :class => 'btn' %>
</div>
该控制器中没有其他路由以相同的方式响应。表单上没有javascript(并且表单不是部分)或在单独的js或coffee文件中。该应用程序确实在几个位置使用了jQuery,但不是在add_certificates单元中的任何位置。
我从控制器方法print_cert中剥离了所有代码,它仍然调用两次。
感谢您的帮助。
编辑添加日志输出:
Started GET "/acd_certificates/print_cert" for 73.48.173.116 at 2015-10-01 22:32:36 +0000
Processing by AcdCertificatesController#print_cert as PDF
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Sent file /home/ubuntu/workspace/tmp/pdfs/b6cda84f-da89-460d-976a-af863def9161.pdf (0.3ms)
Completed 200 OK in 186ms (ActiveRecord: 0.5ms)
Started GET "/acd_certificates/print_cert" for 73.48.173.116 at 2015-10-01 22:32:37 +0000
Processing by AcdCertificatesController#print_cert as PDF
User Load (0.8ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 1]]
Sent file /home/ubuntu/workspace/tmp/pdfs/b1348c24-bec7-442c-8b1f-0927e82ffe93.pdf (0.2ms)
Completed 200 OK in 188ms (ActiveRecord: 0.8ms)
OK,怀疑与JS和turbo链接的使用有关。我将data-no-turbolink添加到调用两次的打印链接中,问题就解决了。使用JS时要记住的一件好事。我没有将JS添加到这个表单中,但它从索引表单中执行,尽管它来自不同的单元。
谢谢rdnewman ! !
相关文章:
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- 如何避免在树上走两次
- button.单击两次删除附加操作后不工作
- 由于$compile,Javascript(Angular)嵌套指令加载了两次
- 单击元素两次后执行操作
- AngularJs正在阻止链接被点击两次
- 为什么我的路线处理程序会触发两次
- 为什么Highchart在我的rails应用程序中加载了两次?(未捕获的Highcharts错误#16)
- 在列表中至少使用两次随机生成的nr
- 主干路由绑定,但触发两次
- Rails路由执行两次
- 脊梁骨路由器路由更改事件触发两次
- angular 2的路由需要点击两次来触发ngOnInit