2012-04-13 9 views
6

tengo un bucle de rubí que crea una lista de comentarios ..función de llamada jQuery de rieles link_to

Me pregunto si puedo conectar la función jQuery para rieles helper link_to en este caso?

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

que estoy esperando algo así como

<% @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 %> 

Sé que no va a funcionar, pero me pregunto ¿hay una manera fácil de lograr este tipo de funcionalidad?

Gracias!

Respuesta

6

Puede hacer esto de dos maneras.

El primero es el añadir un atributo HTML en el link_to:

<% @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 %> 

El segundo es para separar el Javascript de Ruby:

<% @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> 

Si desea que el contenido de la etiqueta de enlace, sustituir 'CONTENTS OF HTML' por $(this).html()

+0

gracias Lo intentaré ahora – Stpn

2

Es posible que desee utilizar la delegación de eventos, ya que parece que va a crear una gran cantidad de comentarios.

Por lo tanto, los préstamos de subvención algo como:

<% @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

también que en realidad descubrí sobre rieles ayudante link_to_function y fue capaz de conseguir el comportamiento deseado con:

<% @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> 
Cuestiones relacionadas