2012-04-13 10 views
6

ich eine rubin Schleife haben, die eine Liste von Kommentaren erstellt ..Anruf jQuery-Funktion von Rails link_to

Ich frage mich, wenn ich jQuery Funktion Rails link_to Helfer in diesem Fall anhängen?

<% @video.phrases.each do |phrase| %> 
    <div class = "span4" id ="comment" ><%= phrase.content %></div><a id ="ff" ><%= image_tag("ff.png", :size=> "32x32")%></a> 
    <% end %> 

Ich hoffe auf etwas wie

<% @video.phrases.each do |phrase| %> 
    <div class = "span4" id ="comment" ><%= phrase.content %></div><%= link_to (image_tag("ff.png", :size=> "32x32"), html => {<script>$("#video_div").html('CONTENTS OF HTML');</script>} :remote => true %> 
    <% end %> 

Ich weiß es nicht funktionieren wird, aber ich frage mich, ist es eine einfache Möglichkeit, diese Art von Funktionalität zu erreichen?

Danke!

Antwort

6

Sie können dies auf zwei Arten tun.

Die erste ist das ein HTML-Attribut auf dem link_to hinzufügen:

<% @video.phrases.each do |phrase| %> 
    <div class = "span4" id ="comment" > 
    <%= phrase.content %> 
    </div> 
    <%= link_to (image_tag("ff.png", :size=> "32x32"), html => {:onclick => "$('#video_div').html('CONTENTS OF HTML');"} :remote => true %> 
<% end %> 

Die zweite ist die Javascript von Ruby zu trennen:

<% @video.phrases.each do |phrase| %> 
    <div class = "span4" id ="comment" > 
    <%= phrase.content %> 
    </div> 
    <%= link_to (image_tag("ff.png", :size=> "32x32") :remote => true %> 
<% end %> 

<script type="text/javascript"> 
    $('a').click(function(){ 
    $("#video_div").html('CONTENTS OF HTML'); 
); 
</script> 

Wenn Sie den Inhalt des Link-Tag möchten, ersetze 'CONTENTS OF HTML' für $(this).html()

+0

Dank werde das jetzt versuchen – Stpn

2

Vielleicht möchten Sie Ereignisdelegierung verwenden, da es so aussieht, als würden Sie eine große Anzahl von Kommentaren erstellen.

So Kreditaufnahme von Zuschuss so etwas wie:

<% @video.phrases.each do |phrase| %> 
    <div class = "span4" id ="comment" > 
    <%= phrase.content %> 
    </div> 
    <%= link_to (image_tag("ff.png", :size=> "32x32") :remote => true %> 
<% end %> 
<script type="text/javascript"> 
    $("#comment-wrapper-name-here").on("click", "a", function() { 
    $("#video_div").html('CONTENTS OF HTML'); 
); 
</script> 
3

Auch link_to_function Helfer tatsächlich über Rails fand ich heraus, und war in der Lage, das gewünschte Verhalten mit zu erreichen:

<% @video.phrases.each do |phrase| %> 
<div class = "span4" id ="comment" ><%= phrase.content %></div><a id ="ff"> 
    <%= link_to_function image_tag("ff.png", :size=> "32x32"), "use_comment('#{phrase.comment}')"%> 
</a>