如何在用户提交投票后使此按钮消失?
<p id="button_<%= review.id %>"><%= f.submit "vote" %></p>
答案 0 :(得分:3)
我禁用按钮而不是隐藏;创建一个不那么混乱的界面。
只需添加onclick
属性即可轻松完成此操作:
<p id="button_<%= review.id %>" onclick="this.disabled=true;"><%= f.submit "vote" %></p>
但是如果你想隐藏它,你可以改用this.style.display='none';
。 (如果我能记住香草JS)
如果你已经在使用jQuery(或者会做很多这样的事情):
$('#button_<%= review.id %>').click(function() {
$(this).remove(); // or $(this).hide();
}
修改: this shows the difference between Dr.Dredel's and my solution
onsubmit
版本让RobG感到高兴(你必须把它放在<form>
上)
<form ... onsubmit="document.getElementById('button_<%= review.id %>').disabled=true;">
他是对的,这样做更有意义onsubmit
;还有其他方式提交表单,例如按Enter键。据推测,你仍然希望按钮在这种情况下被禁用(如果我没有弄错也会阻止你通过输入提交两次)
答案 1 :(得分:2)
这是基于您希望人们能够重新访问原始页面并且不再显示投票按钮的假设,而不是在您单击投票后隐藏它。如果你想让它消失并使用ajax,那么到目前为止的其他答案将解释如何做到这一点。
在您的控制器中,查看是否有人提交了他们正在审核的评论。
#this assumes that you have foreign keys user_id and article_id in your reviews table
# and that @article and @user are the objects you're passing down
@posted_review = Review.find_by_user_id_and_article_id(@article.id, @user.id)
然后,在视图中:
<% if @posted_review.nil? %>
<p id="button_<%= review.id %>"><%= f.submit "vote" %></p>
<% end %>
我将@posted_review设置为实际的审阅对象,以便您可以在需要时访问其属性,例如调用&lt;%= @ posting_review.created_at%&gt;