我正在尝试比较2个值,并在条件成立时更改其中一个的颜色。 但是我也有一个搜索栏,当我使用Rails将其包装在<%if%>语句中的<%if%>语句中时,我无法访问标签值。
我本来就是这样的代码
<% if track.user.username == current_user.username%>
<td class="track_table_current_user">
<span><%= track.user.username %></span>
</td>
<% else %>
<td class="td-userName">
<span class="track_table_user_name"><%= track.user.username %> </span>
</td>
<% end %>
到目前为止,我的三元组:
<td class="track_table_user_name <% track.user.username == current_user.username ? "this_current_user" : "other_user" %>">
<%= track.user.username %>
</td>
如果使用<%if%> <%else%>,我将无法访问值的搜索功能:
function trackTableSearch() {
var input, filter, table, tr, td, i, txtValue;
input = document.getElementById("trackTableInput");
filter = input.value.toUpperCase();
table = document.getElementById("tracksTable");
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
tdN = tr[i].getElementsByClassName("td-trackName")[0];
tdU = tr[i].getElementsByClassName("track_table_user_name")[0];
tdR = tr[i].getElementsByClassName("td-trackApproved")[0];
tdP = tr[i].getElementsByClassName("td-public")[0];
if ((tdN) || (tdU) || (tdR) || (tdP)) {
txtValueN = tdN.textContent || tdN.innerText;
txtValueU = tdU.textContent || tdU.innerText;
txtValueA = tdR.textContent || tdR.innerText;
txtValueP = tdP.textContent || tdP.innerText;
if (txtValueN.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
}else if (txtValueU.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else if (txtValueA.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
}else if (txtValueP.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
}else{
tr[i].style.display = "none";
}
}
}
答案 0 :(得分:2)
您可能想要执行以下操作:
<td class="<%= track.user.username == current_user.username ? "track_table_current_user" : "td-userName" %>">
<%= track.user.username %>
</td>
请参阅this answer,了解如何使用三元运算符,它在每种语言中的工作原理都差不多。
答案 1 :(得分:1)
在这里我不会使用三元运算符,因为它会使您的模板代码更加难以阅读。相反,我将执行if-else语句。对于非常短的if-else语句,三元运算符确实非常好,但是特别是在呈现的代码中,我们希望减少所有逻辑,而在不可能的情况下,我们希望它易于解析。
这很容易解析:
<% if track.user.username == current_user.username %>
<td class="track_table_user_name <%= this_current_user %>>
<% else %>
<td class="track_table_user_name <%= other_user %>>
...
我什至可以在控制器中制作一个@rendered_username
变量,因此您不必执行任何这种逻辑。
答案 2 :(得分:0)
我想通了...。我不愿承认这一点,但我忘记了'='符号... uggggg为什么!?!?!
OtherThing
感谢大家的帮助和.inspect,并在控制器中添加了一个变量。
我的最终作品:
<td class="track_table_user_name \
<% ***(right here)*** track.user.username == current_user.username ? "this_current_user" : "other_user" %>">
<%= track.user.username %>
</td>