rails ajax动态选择渲染局部的位置

时间:2015-04-04 02:05:30

标签: jquery ruby-on-rails ajax

我的html模板中有一个循环语句,它生成了许多具有唯一ID的div和按钮。生成的html类似于以下内容......

// show.html.erb
<button id="button-town-data1"><%= link_to 'Load Details', town_path(current_user.town), id:"link-town-data1", remote:true %></button>
<div id="town-data1"></div>
<div>other stuff here blah blah</div>
<button id="button-town-data2"><%= link_two, remote:true, etc %></button>
<div id="town-data2"></div>

当用户点击按钮时,我想将部分加载到相应的div中。但是我在告诉rails哪个div加载时遇到了麻烦。

// show.js.erb
$('#town-data1').html("<%= j (render 'town_data') %>");
$('#town-data2').html("<%= j (render 'town_data') %>");

以上是我目前所拥有的,但我真的想要一些看起来像这样......

$(dynamically_generated_selector).html("<%= j (render 'town_data') %>");

我不想将部分加载到每个div中。这会让它看起来很奇怪。我希望能够选择加载部分的位置将根据单击的按钮动态加载...我尝试$(this).html("<%= j (render 'town_data') %>");但它没有工作。也许我可以将参数传递给我的控制器,然后使用show.js.erb中的参数?

1 个答案:

答案 0 :(得分:1)

我假设问题是选择在哪个div中呈现数据...而不是要呈现的内容(你已经想到了)。

由于您的按钮和目标div具有相似的ID,您可以使用它。单击任何按钮时,请取其ID。 'button-town-data1',删除部分'button-',你将拥有'town-data1',它是目标div的id。使用它来渲染相关div中的数据。这样,您就可以将每个div与单击的按钮相关联。

我可以给你代码,但我认为它是simle字符串操作,所以你可以尝试一下