2015-06-16 8 views
1

В моих рельсах приложении, у меня есть ссылка, так что пользователь может загрузить 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) 
+0

Не уверен, что причина для этого вызывается дважды, но вы можете добавить в некоторых Javascript, отключающего ссылку Появившийся? –

+0

Просто для здравого смысла, пожалуйста, разместите консоль или файл development.log, который указывает, что метод вызывается дважды. – MarsAtomic

+0

@MarsAtomic Я добавил журналы. – scientiffic

ответ

0

Для меня это было из-за <img src="#">. У меня это было в одном из файлов макетов.
Итак, я изменил «#» на «http://example.com», и проблема была решена.

Я получил это решение здесь (ответ aNoble в):
Rails seems to be serving the page twice

Смежные вопросы