我有一个使用form_tag帮助器的基本表单,工作正常,但我想添加一个取消按钮,语法是什么?我想取消按钮显示为按钮,而不是链接,然后将用户带到一个不同的URL(表示他们不想提交表单)。弗雷德·泰
wztqucjr1#
如果您想清除/重置表单域,请按照weltschmerz的建议操作。然而,我通常希望取消按钮不会清除表单,而是让我离开表单,这意味着我不打算提交它。如果你想要后者,我只需要做一个链接(或按钮)到你想去取消后的页面,如:
=link_to 'Cancel', my_page_path
或者,如果您需要按钮:
= button_tag "Cancel", :type => 'button'
然后将此添加到您的控制器:
# before_filter for Rails 4.x and prior before_action :check_for_cancel, :only => [:create, :update] def check_for_cancel if params[:commit] == "Cancel" redirect_to my_page_path end end
soat7uwm2#
如果您指的是重置按钮,请将以下内容粘贴到表单中:
<%= button_tag "Reset", type: :reset %>
测试它,它工作正常,并重置表单中的所有字段。
lvmkulzt3#
我建议使用<button>标签而不是submit标签,因为参数:commit可能是本地化的,因此在控制器中进行评估会很麻烦。button_tag可以像任何其他字段一样具有名称/值,因此基本上可以用它创建一个标志。下面的代码是我将使用的:
<button>
:commit
button_tag
在视图中:
<%= button_tag t('buttons.cancel'), type: "submit", name: "cancel", value: true %>
在控制器中:
before_filter :redirect_cancel, only: [:create, :update] private def redirect_cancel redirect_to my_page_path if params[:cancel] end
更干净的imho,因为你依赖于一个标志,而不是一个(潜在的)本地化的显示值。
uplii1fm4#
button_to看起来是一个简单的方法来实现相同的功能,但是它必须放在表单本身之外,但是这可以很容易地用css来修复。此外,要以更通用的方式解决此问题(也适用于编辑尚未持久化的资源上的嵌套资源),您可以为取消创建一个单独的表单,其中包含所有原始值作为隐藏字段。
button_to
w6lpcovy5#
简单明了。
<%= link_to "Cancel", show_page %>
5条答案
按热度按时间wztqucjr1#
如果您想清除/重置表单域,请按照weltschmerz的建议操作。
然而,我通常希望取消按钮不会清除表单,而是让我离开表单,这意味着我不打算提交它。
如果你想要后者,我只需要做一个链接(或按钮)到你想去取消后的页面,如:
或者,如果您需要按钮:
然后将此添加到您的控制器:
soat7uwm2#
如果您指的是重置按钮,请将以下内容粘贴到表单中:
测试它,它工作正常,并重置表单中的所有字段。
lvmkulzt3#
我建议使用
<button>
标签而不是submit标签,因为参数:commit
可能是本地化的,因此在控制器中进行评估会很麻烦。button_tag
可以像任何其他字段一样具有名称/值,因此基本上可以用它创建一个标志。下面的代码是我将使用的:
在视图中:
在控制器中:
更干净的imho,因为你依赖于一个标志,而不是一个(潜在的)本地化的显示值。
uplii1fm4#
button_to
看起来是一个简单的方法来实现相同的功能,但是它必须放在表单本身之外,但是这可以很容易地用css来修复。此外,要以更通用的方式解决此问题(也适用于编辑尚未持久化的资源上的嵌套资源),您可以为取消创建一个单独的表单,其中包含所有原始值作为隐藏字段。
w6lpcovy5#
简单明了。