【问题标题】:How do I make my div IDs variable in rails?如何使我的 div ID 在 Rails 中可变?
【发布时间】:2010-10-07 23:00:55
【问题描述】:

我觉得应该有一个简单的方法来做到这一点,但我只是不知道它是什么。我有一个要显示的数据列表,我想包含一个 AJAX“阅读更多”功能来扩展每个段底部的信息。为此,我需要每个段中的唯一 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,点击“阅读更多”只会显示第一个。如何插入变量 div ID?我知道如何在 PHP 中做到这一点,但这让我很难过。即使我们让 div ID 本身是可变的,我们如何让 Element.show 接受一个变量?

【问题讨论】:

  • 你的引号不匹配,双引号内不能有双引号

标签: jquery ruby-on-rails css ajax prototypejs


【解决方案1】:

你可以这样做:

<% 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}')" %> 

【讨论】:

  • 太棒了。我明白你在这里做什么,但它不喜欢 ')" %>, throws "unterminated string符合文件结尾”。这就是我无法让它接受变量的原因。
  • 已编辑。由于您已经在 link_to_function 参数中的 Ruby 中,因此无需执行另一个 块 - 只需基本插值即可。
  • 啊啊啊啊,明白了。只要您从##{div_id} 中取出第一个#,这将起作用。谢谢!
  • 您能解释一下如何从 jquery 访问该变量吗?
【解决方案2】:

执行此操作的常规 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 %>

【讨论】:

    【解决方案3】:

    虽然您可以使用给定的示例(有效),但我可能会建议使用 rails 函数(http://api.rubyonrails.org/classes/ActionView/Helpers/RecordTagHelper.html)。然后在按钮/链接上,您只需找到最近的具有某个类的 div 并拉出 id 并执行您的显示逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-07
      • 2018-10-24
      • 2020-10-22
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      相关资源
      最近更新 更多