2016-06-17 7 views
0

Nun, ich weiß, das ist eine häufige Frage und hat viele Ratschläge gefunden, wie es geht, aber es funktioniert nicht für mich und ich kann nicht verstehen, was los ist.Wie verwende ich Ruby-Code in Coffeescript jquery, wenn wir ein Objekt mit dynamischer ID auswählen möchten?

index.html.slim

- books.each do |book| 
    .row class = "review_form" id = book.id 
    .panel 
     == render 'reviews/form', review: review, book: book 

book.js.coffee

$('.row.review_form').hide() 
    $('#new_review_button').on "click", -> 
    $('.row.review_form#<%= book.id %>').show() 
    $('#new_review_button').hide() 
    $('#cancel_review').on "click", -> 
    $(".row.review_form#<%= book.id %>").hide() 
    $('#new_review_button').show() 

Nach Anweisungen, wenn Sie Ruby-Code verwenden möchten, in javascript Sie <% verwenden sollten = ruby-Code%> wie ich bin hier $ tun (‘. row.review_form # <% = book.id%> ') .show() aber nichts passiert. Es scheint, als wenn ich <% = in Klammern schreiben sie in eine Zeichenfolge ändert und js nicht versteht es sich um ein Wähler mit Ruby-Code ist. Was mache ich falsch? Bitte, hilf mir, ich bin total verwirrt! > <

+0

Was genau ist der Fehler hier? –

+0

@Sergio Kein Fehler, nur passiert nichts. Wenn ich die Konsole öffne und js sehe, gibt es nur $ (". Row.review_form # <% = book.id%>"). Hide(); nicht $ (". Row.review_form # 1"). Hide(); zum Beispiel. Und Rubymine hebt diese Zeile hervor, als wäre es nur eine Zeichenkette, aber kein Selektor, wenn ich anfange zu schreiben. <% = – Jakov

+0

Wo rendern Sie dann Ihre Kaffeedatei? Denken Sie daran, dass 'book' nur in diesem' jedem' Block existiert. –

Antwort

1

In Ihrem Fall müssen Sie nicht in Ihrem Kaffee-Skriptdatei ein Schienen-Objekt haben. Sie können Ihre Datei in book.js.coffee.erb umbenennen, um <%= %># erb tags auszuführen. Andernfalls wird es nur als eine Zeichenfolge betrachtet. Weitere Informationen finden Sie unter this. Hoffe es funktioniert :-)