我在Internet Explorer中遇到了一个奇怪的错误。
我有一个带有remote =>的form_for真。
反过来,当调用create动作时,会有一个关联的create.js.erb文件。
当我点击提交IE时,浏览器会让我下载返回的create.js.erb文件。
仅当我尝试在表单中上传图片时才会出现这种情况。
我不明白问题是什么。
该表单适用于Firefox和Chrome。
我正在使用remotipart进行图片上传(不确定是否有帮助)。
另外,我使用回形针作为图像附件。
下面我将发布我的视图,控制器和create.js.erb。
查看:
<% form_for @post, :remote => true, :html => {:multipart => true} do |f| %>
<%= f.text_area :message, :value => "What's up?" %>
<div id="newPostBottom">
<div id="newPostBottomRight">
<div id="loading">
Sharing <%= image_tag('spinner.gif') %>
</div>
<%= f.submit "Share", :class => 'button' %>
</div>
<div id="newPostBottomLeft">
<%= f.label :channel, "Select Channel:" %><%= f.select :channel, channels, :prompt => "Choose..." %>
<div id="postImageUpload">
<%= image_tag('icons/camera.png', :id => 'postUploadImageIcon', :alt => 'Upload Image', :title => 'Upload Image') %>
</div>
<%= f.file_field :post_image %>
</div>
</div>
<% end %>
控制器:
def create
account = Account.getAccountById(session[:user])
@post = account.posts.build(params[:post])
payload = {
"account_id" => account.id,
"name" => account.name,
"message" => params[:post][:message],
"channel" => params[:post][:channel]
}
if @post.save
Pusher['front-post-feed-channel'].trigger('front-post-feed-create', payload)
else
render :nothing => true
end
rescue ActiveRecord::RecordNotFound
reset_session
end
Create.js.erb:
$("#post_message").val("What's up?");
$("#post_message").css({height: '30px'});
$("#newPostBottom").hide();
$("#postsHomeFeed").prepend("<%= escape_javascript(render(:partial => '/posts/new_post', :locals => {:post => @post})) %>");
$("#loading").hide();
$("#post_submit").show();
$("#post_channel").val('');
$("#post_post_image").val('');
if($(".noContent").length > 0) {
$(".noContent").remove();
}
感谢任何帮助。
谢谢,
布赖恩
答案 0 :(得分:1)
尝试在create.js.erb
块中包装remotipart_response
文件的内容:
<%= remotipart_response do %>
$("#post_message").val("What's up?");
$("#post_message").css({height: '30px'});
$("#newPostBottom").hide();
$("#postsHomeFeed").prepend("<%= escape_javascript(render(:partial => '/posts/new_post', :locals => {:post => @post})) %>");
$("#loading").hide();
$("#post_submit").show();
$("#post_channel").val('');
$("#post_post_image").val('');
if($(".noContent").length > 0) {
$(".noContent").remove();
}
<% end %>