Rails 3使用remotipart gem上传Ajax文件失败

时间:2012-05-10 18:57:44

标签: ruby-on-rails ruby ajax uploading

我在使用gem'remotipart','〜>在Rails 3.0.5 Ruby v 1.8.7中上传Ajax文件时遇到问题0.4' 。当我删除if @ asset.save时,我成功显示警报?控制器中的语句但是当它在那里时没有调用js文件。出于某种原因,资产没有被保存。

有什么想法吗?

控制器:

def create
  @asset = Asset.new(params[:asset])

  respond_to do |format|
    if @asset.save
      format.html
      format.js
    end
  end
end

查看:

<%= form_for @asset, :remote => true, :html => {:multipart => true}, :id =>             "new_asset_form" do |f| %>
    <%= render :partial => 'shared/error_messages', :locals => { :target => @asset } %>
    <%= f.hidden_field :company_id, :value => current_company.id %>
    <%= f.file_field :asset %> 
    <%= submit_tag 'Add', :class => 'submit' %>
<% end %>

Create.js.erb:

<%= remotipart_response do %>
  // Display a Javascript alert
  alert('success!');
  <% if remotipart_submitted? %>
    alert('submitted via remotipart')
  <% else %>
alert('submitted via native jquery-ujs')
  <% end %>
<% end %>

终端日志:

Started POST "/assets" for 127.0.0.1 at Thu May 10 14:45:40 -0400 2012
  Processing by AssetsController#create as JS
  Parameters: {"commit"=>"Add",     "authenticity_token"=>"9TDxFQfTGrdz8gKti413FoIr1JUSwLGQQXv/tJQd+sY=", "utf8"=>"✓", "_"=>"",     "asset"=>{"company_id"=>"5"}}
  Company Load (0.5ms)  SELECT `companies`.* FROM `companies` WHERE     `companies`.`subdomain` = 'demo' LIMIT 1
  User Load (0.7ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 295 AND (company_id = 5) LIMIT 1
  CACHE (0.0ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 295 AND (company_id = 5) LIMIT 1
Rendered assets/create.js.erb (0.7ms)
Completed 200 OK in 182ms (Views: 8.9ms | ActiveRecord: 1.2ms)

感谢您的帮助。被困了几个小时。

1 个答案:

答案 0 :(得分:0)

尝试升级到最新版本的Remotipart,可在此处找到:http://os.alfajango.com/remotipart/