在rails循环中多次使用JQuery Dialog

时间:2012-06-19 16:12:23

标签: jquery ruby-on-rails-3 jquery-ui-dialog dynamic-links

我在循环中有以下rails代码,其中包含jquery对话框的链接。

(此链接中的'report_image'是一个简单调用图像的辅助方法。)

<%= link_to report_image, "#", :class => "flight_report_opener" %>
  <div id="flight_report_dialog" title=" FLIGHTS REPORT">
    <p>Dialog content</p>
  </div>
<% end %>

问题当然是,这会在同一页面上生成id =“flight_report_dialog”的多个实例...这会破坏.dialog调用。也不能使用类。我试图通过将循环生成的id(@ ratings.each do | rating |)添加到对话框div css id的末尾来更改要动态生成的id。然后通过link_to_function中的命名函数调用传递它。

<div id="flight_report_dialog_<%= rating %>" title=" FLIGHTS REPORT"> %> </div>

这对我来说也没有用。

我觉得我在这里有一个大脑放屁。希望有人能够帮我解决这个问题。

如何从动态生成的链接在同一页面上多次调用jquery对话框功能。

我目前使用的功能就是这个...当然不起作用。实际上,为了清楚起见,该函数在id的第一个实例上工作正常:

$("#flight_report_opener").click(
     function() { $( "#flight_report_dialog" ).dialog( "open" ); 
     return false; 
});

1 个答案:

答案 0 :(得分:0)

以下是我为解决这个问题所做的工作。您可以将此代码分成上面的代码...

在视图中:

<%= link_to report_image, "#", :class => "ground_report_opener", :data => {rating: rating.id} %>
<div class="ground_report_dialog" id="ground_report_dialog_<%= rating.id %>" title=" GROUND REPORT">

在JS中:

$(".flight_report_opener").click(function() { 
$( "#flight_report_dialog_"+$('.flight_report_opener').data('rating') ).dialog( "open" ); 
return false; 
});