我觉得应该有一个简单的方法来做到这一点,但我只是不知道它是什么。我有一个要显示的数据列表,我想要包含一个AJAX“Read More”功能来扩展每个段底部的信息。为此,我需要在每个段中使用唯一的div ID。我有这段代码:
<% for choice in @student_choices %>
<div id= "student_description", style="display:none;">
<%= choice[:description]%>
</div>
<%= link_to_function "Read More", "Element.show("student_description")"%>
<% end %>
但由于有多个div ID,因此单击“Read More”仅显示第一个。如何插入变量div ID?我知道如何在PHP中执行此操作,但这让我很难过。即使我们将div ID本身变为可变,我们如何让Element.show接受变量?
答案 0 :(得分:5)
您可以执行以下操作:
<% div_id = "student_description_#{choice.id}" -%>
<div id="<%= div_id -%>", style="display:none;">
<%= choice.description %>
</div>
<%= link_to_function "Read More", "Element.show('##{div_id}')" %>
答案 1 :(得分:3)
传统的rails方式是使用dom_id
然后您可以执行类似
的操作<% for choice in @student_choices %>
<div id="<%= dom_id(choice) %>" style="display:none;">
<%= choice[:description]%>
</div>
<%= link_to_function "Read More", "Element.show('#{dom_id(choice)}')"%>
<% end %>
答案 2 :(得分:0)
虽然您可以使用给定的示例(哪些工作),但我建议使用rails函数(http://api.rubyonrails.org/classes/ActionView/Helpers/RecordTagHelper.html)。然后在按钮/链接上,您只需找到具有特定类的最近的div,然后拉出ID并执行显示逻辑。