长时间的Ajax请求后,ActionView :: MissingTemplate

时间:2012-07-14 15:27:33

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

我的一个远程操作遇到了一些奇怪的问题。我想解析通过表单上传的CSV文件。 CSV文件正确解析,大约需要20秒(没问题,因为CSV文件包含带下载链接的网址)。解析成功后,我的视图无法显示。有趣的是,当未在表单中选择csv文件时,视图呈现。

#Products Controller:
  def get_imported
     p=Product.new
     @tab = nil
     @tab = p.import_csv(params[:product][:csv_file],params[:product][:source]) unless params[:product][:csv_file].nil?
  end

#app/views/products/get_imported.js.coffee view:
    $('#results').html '<br/><div class="alert alert-info">
    <h4 class="alert-heading">Imported products:</h4>
    <% if @tab.blank? %>
        Error: No CSV file
    <% else %>
        <% for element in @tab %>
            <%= @tab.name %><br/>
        <% end %>
    <% end %>
    </div>'

如果我选择csv文件并在错误显示后提交我的表单:

    ActionView::MissingTemplate (Missing template products/get_imported, application/get_imported with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in:
      * "/home/chmarus/Pulpit/test/app/views"
      * "/home/chmarus/.rvm/gems/ruby-1.9.3-head/gems/twitter-bootstrap-rails-2.1.0/app/views"
      * "/home/chmarus/.rvm/gems/ruby-1.9.3-head/gems/devise-2.1.2/app/views"
      * "/home/chmarus/.rvm/gems/ruby-1.9.3-head/gems/ckeditor-3.7.1/app/views"
    ):

我不明白为什么rails无法找到这个模板。如果未选择任何文件,则会正确地从同一文件中呈现警报。

1 个答案:

答案 0 :(得分:2)

发送CSV文件时,发出的请求是针对MIME类型HTML而不是JS(如错误消息:formats=>[:html]中所示)。这可能是因为直到最近才通过AJAX请求发送文件(它需要一个解决方法)。

如果您想通过AJAX请求提交CSV文件,请查看此处的建议jQuery Ajax File Upload或稍微谷歌。

否则请确保您处理HTML MIME类型。