I have a rails create action which send back some jquery in a file:
create.js.erb
var appearance = $("<%= escape_javascript(render(:partial => @appearance)) %>").effect("highlight", {color: '#E6ff00'}, 2000);
$("#sortable").append(appearance);
$("#new_appearance")[0].reset();
I have started using HAML and want to know how I should be converting this. Can I use js.haml? If so what should the markup look like?
Actually, returning JS in HAML is pretty easy, just use the :plain filter and enclose anything you want evaluated in #{}.
:plain
var appearance = $("#{escape_javascript(render(:partial => @appearance)}").effect("highlight", {color: '#E6ff00'}, 2000);
$("#sortable").append(appearance);
$("#new_appearance")[0].reset();
Do not use the :javascript filter as it will enclose everything in a tag which is unnecessary.
If you need to use some logic, just put the :plain inside the nesting.
- if params[:printing]
:plain
$('#print-view').html("#{escape_javascript(render 'print_preview')}");
Sorry ERB.
Haml's really meant to generate HTML. You could, in theory, use create.js.haml
, but ERB makes much more sense when you're writing Javascript.
Well looks like you dont need the != in front of each line. The following works for me just fine. Im using Rails 3 and latest version of HAML
$('#comments_table_header').after('#{escape_javascript(render :partial => 'row', :locals => { :comment => @comment })}');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With