我的一个远程操作遇到了一些奇怪的问题。我想解析通过表单上传的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无法找到这个模板。如果未选择任何文件,则会正确地从同一文件中呈现警报。
答案 0 :(得分:2)
发送CSV文件时,发出的请求是针对MIME类型HTML而不是JS(如错误消息:formats=>[:html]
中所示)。这可能是因为直到最近才通过AJAX请求发送文件(它需要一个解决方法)。
如果您想通过AJAX请求提交CSV文件,请查看此处的建议jQuery Ajax File Upload或稍微谷歌。
否则请确保您处理HTML MIME类型。