2012-04-13 35 views
6

Tôi có một vòng ruby ​​tạo danh sách các nhận xét ..Gọi hàm jQuery từ Rails link_to

Tôi tự hỏi liệu tôi có thể đính kèm hàm jQuery vào Rails link_to helper trong trường hợp này không?

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

tôi hy vọng cho một cái gì đó giống như

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

tôi biết nó sẽ không làm việc, nhưng tôi tự hỏi là có một cách dễ dàng để đạt được loại chức năng?

Cảm ơn!

Trả lời

6

Bạn có thể thực hiện theo hai cách.

Đầu tiên là thêm một thuộc tính html trên 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 %> 

Thứ hai là để tách Javascript từ 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> 

Nếu bạn muốn các nội dung của thẻ liên kết, thay thế 'CONTENTS OF HTML' cho $(this).html()

+0

nhờ sẽ thử ngay bây giờ – Stpn

2

Bạn có thể muốn sử dụng ủy quyền sự kiện vì có vẻ như bạn sẽ tạo một số lượng lớn nhận xét.

Vì vậy, mượn từ một cái gì đó cấp như:

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

Ngoài ra tôi thực sự phát hiện ra về Rails link_to_function helper và đã có thể đạt được các hành vi mong muốn với:

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