jquery表单插件/ rails文件上传/纯文本响应而不是html

时间:2010-06-04 10:57:58

标签: jquery ruby-on-rails ruby ajax

我正在尝试通过ajax表单上传文件来工作..因为我使用jquery表单插件文件上传效果很好..但是respond_to js块中呈现的html以纯文本形式返回。希望有人可以提供帮助

控制器:

if @visitreport.save
flash[:notice] = "Der Besuchsbericht wurde erstellt."
respond_to do |format|
format.html{redirect_to @visitreport}
format.js
end

create.js.erb:

$("#last_customers").replaceWith('<div id="last_customers"><%= escape_javascript(render :partial => 'customers/last_customers') %> </div>');
$("#reminder").replaceWith('<div id="reminder"><%= escape_javascript(render :partial => "customers/reminder", :locals => {:date => Date.today+1}) %>');
..和其他一些jquery - 魔法

_last_customers.html.haml: - 仅举例来说

%h5 Die zuletzt bearbeiteten Kunden
%hr
.subcolumns
-get_user_customers.each do |uc|
.c25l
.subcl
=link_to("#{uc.id}", customer_path(uc.id))
.c75l
.subcl
=link_to("#{get_customer_name(uc.id)}", customer_path(uc.id))

响应如下:

&lt;div class="report round_corners box_shadow"&gt;&lt;h5&gt;bearbeitet am Freitag, 04. Juni 2010, 12:06 Uhr&lt;/h5&gt; &lt;div class='text-right'&gt; per Telefon am 05.07.2010 &lt;/div&gt; &lt;p class='report_content'&gt; fg &lt;/p&gt; &lt;div class='text-right reminder'&gt; Wiedervorlage am 14.12.2015 &lt;br /&gt; &lt;a href="/visitreports/138/edit"&gt;Bericht bearbeiten &gt;&gt;&lt;/a&gt; &lt;/div&gt; &lt;h5&gt;Dateien&lt;/h5&gt; &lt;a href="/assets/27"&gt;bg_mainmenu.gif&lt;/a&gt; &lt;/div&gt;

的application.js:

("#new_visitreport").submit(function() {
$(this).ajaxSubmit(
dataType  : 'script',
  iframe    : true,
success   : function (data) {
    data = eval(data.replace("<pre>", "").replace("</pre>", ""));
  }
});
return false;
});
我在做错了什么? 希望有人能提供帮助! jquery版本1.4.2

2 个答案:

答案 0 :(得分:1)

根据jQuery表单documentation,建议将响应包装在textarea中。 erb中的示例:

<textarea>
  jQuery("#documents").prepend("<%= escape_javascript(render @document) %>");
</textarea>

然后在控制器上将内容类型设置为text/html

respond_to do |format|
  # jQuery Form needs to have text/html as Content-Type.
  format.js { render :content_type => Mime::HTML.to_s }
end

答案 1 :(得分:0)

如果你正在使用Rails 3而你想稍微简化一下这个过程,你应该试试Remotipart的宝石:

http://rubygems.org/gems/remotipart

http://github.com/leppert/remotipart