سؤال

لدي إجراء إنشاء Rails والذي يرسل بعض jquery في ملف:

create.js.erb

var appearance = $("<%= escape_javascript(render(:partial => @appearance)) %>").effect("highlight", {color: '#E6ff00'}, 2000);
$("#sortable").append(appearance);
$("#new_appearance")[0].reset();

لقد بدأت باستخدام HAML وأريد أن أعرف كيف يجب أن أقوم بتحويل هذا.هل يمكنني استخدام js.haml؟إذا كان الأمر كذلك، كيف يجب أن تبدو العلامات؟

هل كانت مفيدة؟

المحلول

في الواقع، يعد إرجاع JS إلى HAML أمرًا سهلاً للغاية، ما عليك سوى استخدام عامل التصفية :plain وإرفاق أي شيء تريد تقييمه في #{}.

:plain
  var appearance = $("#{escape_javascript(render(:partial => @appearance)}").effect("highlight", {color: '#E6ff00'}, 2000);
  $("#sortable").append(appearance);
  $("#new_appearance")[0].reset();

لا تستخدم مرشح:javascript لأنه سيضع كل شيء في علامة غير ضرورية.

إذا كنت بحاجة إلى استخدام بعض المنطق، فما عليك سوى وضع :plain داخل التداخل.

- if params[:printing]
  :plain
    $('#print-view').html("#{escape_javascript(render 'print_preview')}");

آسف إرب.

نصائح أخرى

كان هامل يقصد حقًا إنشاء HTML.يمكنك، من الناحية النظرية، استخدام create.js.haml, ، لكن ERB يكون أكثر منطقية عند كتابة Javascript.

حسنًا، يبدو أنك لا تحتاج إلى != الموجود أمام كل سطر.ما يلي يعمل بالنسبة لي على ما يرام.أنا أستخدم Rails 3 وأحدث إصدار من HAML

$('#comments_table_header').after('#{escape_javascript(render :partial => 'row', :locals => { :comment => @comment })}');

في js.haml سيبدو الأمر هكذا

!= "var appearance = $('<%= escape_javascript(render(:partial => @appearance)) %>').effect('highlight', {color: '#E6ff00'}, 2000);"
!= "$('#sortable').append(appearance);"
!= "$('#new_appearance')[0].reset();"

لاحظ بناء الجملة HAML!= الذي يمنع النص الذي تم إنشاؤه من الهروب من HTML.أوافق على أن ERB مناسب بشكل أفضل هنا، ولكن بالنسبة لحصة الاتساق، قد لا تزال ترغب في السير في طريق HAML.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top