Rails路由执行两次

时间:2015-10-01 21:43:39

标签: javascript jquery ruby-on-rails routes url-routing

我在rails中有路由,每次点击执行两次。首先路由如下 - (它是集合中执行两次的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)

1 个答案:

答案 0 :(得分:0)

可以怀疑它与JS和turbo链接的使用有关。我将数据 - 无涡轮连接添加到打印的链接,这是两次调用并解决了问题。用JS记住一件好事。我没有在这个表单中添加JS,但它从索引表单中进行了调用,即使它来自不同的单元。

谢谢rdnewman !!