我有一个循环,当涉及某个名称时会跳过该记录并显示其他所有内容:
<% @records.each do |record| %>
<% if record.task.project.project_name == "SKIP"%>
<% else %>
Do some stuff like display...
<% end %>
<% end %>
如果循环没有遇到项目名称为“skip”的任何记录,那么我需要使用jquery隐藏某些内容。 如果循环遇到一个或多个“跳过”,那么我需要使用jquery显示一些东西。 我有写的javascript函数:
function show() {
if (<%= @count %> > 1)
{
$(".toil").show();
}
else
{
$(".toil").hide();
}
}
其中@count
是ruby初始化为0的变量,每次跳过projectname时都会递增。我尝试用这样的代码做这件事:
<% @records.each do |record| %>
<% if record.task.project.project_name == "SKIP"%>
<%= javascript_tag do -%>
<% @count = @count + 1%>
<% end -%>
<% else %>
我知道这不起作用,但我想知道如何做到这一点,如果有更好的,更“Ruby-Way”。
答案 0 :(得分:0)
我看到两个选项:
<script>var count = <%= @count %>;</script>
之类的东西然后在你的js中使用它。答案 1 :(得分:0)
将@count
变量保留在Rails中,并为show()
函数生成不同的内容,具体取决于@count
的值:
<%= javascript_tag do -%>
function show() {
<% if @count > 1 %>
$(".toil").show();
<% else %>
$(".toil").hide();
<% end %>
}
<% end -%>
这样您就不需要将@count
变量“传输”到jQuery,因为您可以直接在服务器上处理这两种情况,并保持简洁。
修改:您的示例中的javascript_tag
似乎使用错误,有关javascript_tag
的更多信息/示例,请查看APIDock。