В моих рельсах приложении, у меня есть ссылка, так что пользователь может загрузить GIF на сайте:Рельсы Действия контроллера вызывается дважды
<%= link_to "gif", :controller => "projects", :action => :export_gif, :id => @project.id %>
Это соответствующее действие контроллера:
def export_gif
if @project.gif.blank?
@project.generate_gif #this creates @project.gif
end
gif_path = @project.gif.gif_file_url
gif_path.sub! 'https', 'http'
send_data open(gif_path).read, filename: "project_#{@project.id}.gif", type: "image/gif"
end
Когда пользователь нажимает на ссылку, действие export_gif вызывается дважды. Как я могу обеспечить, чтобы он вызывался только один раз?
Вот что журналы выглядеть после того, как я щелкаю по ссылке:
Started GET "/projects/38/export_gif" for ::1 at 2015-06-16 17:08:55 -0400
Processing by ProjectsController#export_gif as HTML
Parameters: {"id"=>"38"}
Project Load (0.1ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT 1 [["id", 38]]
Gif Load (0.1ms) SELECT "gifs".* FROM "gifs" WHERE "gifs"."project_id" = ? LIMIT 1 [["project_id", 38]]
Rendered text template (0.0ms)
Sent data project_38.gif (3.6ms)
Completed 200 OK in 207ms (Views: 3.4ms | ActiveRecord: 0.2ms)
Started GET "/projects/38/export_gif" for ::1 at 2015-06-16 17:08:55 -0400
Processing by ProjectsController#export_gif as HTML
Parameters: {"id"=>"38"}
Project Load (0.1ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT 1 [["id", 38]]
Gif Load (0.1ms) SELECT "gifs".* FROM "gifs" WHERE "gifs"."project_id" = ? LIMIT 1 [["project_id", 38]]
Rendered text template (0.0ms)
Sent data project_38.gif (0.6ms)
Completed 200 OK in 196ms (Views: 0.5ms | ActiveRecord: 0.1ms)
Не уверен, что причина для этого вызывается дважды, но вы можете добавить в некоторых Javascript, отключающего ссылку Появившийся? –
Просто для здравого смысла, пожалуйста, разместите консоль или файл development.log, который указывает, что метод вызывается дважды. – MarsAtomic
@MarsAtomic Я добавил журналы. – scientiffic