2016-06-17 4 views
0

よくあることですが、これはよくある質問であり、それを行う方法について多くのアドバイスがありますが、それは私にとってはうまくいかず、何が問題なのか理解できません。あなたは<%を使用する必要がありますJavaScriptでRubyのコードを使用したい場合は指示に従えば動的idを持つオブジェクトを選択したいときに、coffeescript jqueryでrubyコードを使用するには?

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() 

=ルビーコード%>私はここにいるよ$( '。row.review_form#<%= book.id%> ').show()しかし何も起こりません。それは私が<%=を書くときのように、それは1つの文字列に変化し、jsはそれがルビコードを持つセレクタであると理解していない。私は間違って何をしていますか?助けてください、私は完全に混乱しています! > <

+0

ここでは正確に何がエラーですか? –

+0

@Sergioエラーはありません。何も起こりません。私がコンソールを開いてjsを見ると$( "。row.review_form#<%= book.id%>")だけがあります。 $( "。row.review_form#1")ではありません。例えば。 rubymineは、この行をハイライトします。文字列であってセレクタではなく、<%= – Jakov

+0

と書き始めます。次にコーヒーファイルをレンダリングしますか? 'book'は' each'ブロック内にのみ存在することを覚えておいてください。 –

答えて

1

あなたの場合、コーヒースクリプトファイルにはレールオブジェクトがありません。ファイル名をbook.js.coffee.erbに変更して<%= %># erb tagsを実行することができます。それ以外の場合は、文字列としてのみ扱われます。詳細については、thisの回答を参照してください。これがうまくいくことを願って:-)

関連する問題