плагин формы jquery / загрузка файла rails / простой текстовый ответ вместо html - PullRequest
1 голос
/ 04 июня 2010

Я пытаюсь заставить загрузку файла через форму ajax работать ... так как я использую плагин формы jquery, загрузка файла работает хорошо ... но отрендеренный HTML в блоке response_to js возвращается в виде простого текста. надеюсь, что кто-то может помочь

Контроллер:

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

create.js.erb:

$("#last_customers").replaceWith('<div id="last_customers"><%= escape_javascript(render :partial => 'customers/last_customers') %> </div>');<br> $("#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<br> %hr<br> .subcolumns<br> -get_user_customers.each do |uc|<br> .c25l<br> .subcl<br> =link_to("#{uc.id}", customer_path(uc.id))<br> .c75l<br> .subcl<br> =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:

<code>("#new_visitreport").submit(function() {
$(this).ajaxSubmit(
dataType  : 'script',
  iframe    : true,
success   : function (data) {
    data = eval(data.replace("<pre>", "").replace("
"," ")); } }); вернуть ложь; });

что я делаю не так? надеюсь, кто-нибудь может помочь! JQuery версия 1.4.2

Ответы [ 2 ]

1 голос
/ 04 июня 2010

Согласно документации jQuery Form рекомендуется обернуть ответ в 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
0 голосов
/ 09 декабря 2010

Если вы используете Rails 3 и хотите немного упростить процесс, вам стоит попробовать гем Remotipart:

http://rubygems.org/gems/remotipart

http://github.com/leppert/remotipart

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...