使用js/jquery隐藏ruby on rails中form_tag上的提交按钮



有没有一种方法可以在点击提交标记后将其隐藏在rails表单中?

我有一个简单的表单标记,带有一个提交标记按钮,其中的内容应该只提交一次。因此,在用户最初单击提交按钮以发送表单标记中的数据后,我想隐藏该按钮,这样用户就不能再单击它了。

我尝试将它包装在div中,并将id传递给jquery函数,它会将按钮隐藏一秒钟,直到页面重新加载(在完成向表单发送数据后(,但随后按钮立即重新出现。任何建议都将不胜感激!

编辑:

用户已登录功能,这是表单

<% form_tag matches_update_path method: :post%>
<% submit_tag “Make Matches?” %> 
<% end %>

本质上,在这种情况下,我想在用户点击一次后隐藏这个表单/按钮

也许不是你想要的jquery答案(因为我不确定是否有(,一旦你通过jquery隐藏了一些东西,并且页面重新加载,jquery应该重新运行以再次隐藏按钮,或者你不能使用erb视图在第一位置显示按钮,这里有多个选项:

如果DB中的记录包括user_id,并且您可以在控制器中检查该特定用户已经提交了表单,请在控制器中填写实例值,例如@already_submited_form = true (true if already submitted false if not),然后在erb视图中检查@already_submited_form是否为,如果为,则不显示按钮

<% form_tag matches_update_path method: :post%>
<% unless @already_submited_form %>
<% submit_tag “Make Matches?” %> 
<% end %>
<% end %>

如果你不能在数据库中检查记录,那么可以尝试在rails控制器中使用cookie:当用户提交表单并且请求到达控制器时,在浏览器cookies.permanent[:already_submited_form] = true中设置一个永久cookie,然后重用@already_submited_form = cookies[:already_submited_form]上面的逻辑

rails中的cookie:https://api.rubyonrails.org/v5.2.1/classes/ActionDispatch/Cookies.html

如果请求没有到达rails控制器,您也可以在js代码中设置cookie

如果你仍然想使用jquery来隐藏这一点,也许你可以使用这两种方法中的一种,将一个数据字段放入提交按钮中,这是通用的(页面加载时数据隐藏=true(,然后jquery用该数据查询元素并隐藏它们(但这似乎有点不必要,因为你可以使用erb来完成所有这些,这是在rails上使用ruby的优势之一(

最新更新