form_for远程无法在Internet Explorer中工作

时间:2011-11-23 03:57:16

标签: jquery ruby-on-rails internet-explorer

我在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();
 }

感谢任何帮助。

谢谢,

布赖恩

1 个答案:

答案 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 %>