[英]Ruby on Rails : how to implement Cancel button in form_tag
我有一个使用 form_tag 助手的基本表单,但我想添加一个取消按钮,这样做的语法是什么? 我希望取消按钮显示为按钮,而不是链接,然后将用户带到另一个 URL(表示他们不想提交表单)。
泰,弗雷德
如果您的意思是重置按钮,请将以下内容粘贴到表单中:
<%= button_tag "Reset", type: :reset %>
经过测试,它可以正常工作并重置表单中的所有字段。
如果要清除/重置表单字段,请执行dchacke的建议。
但是,我通常希望取消按钮不会清除表单,而是使我远离表单,这意味着我不打算提交表单。
如果需要后者,我只需在取消时创建一个指向您要转到的页面的链接(或按钮),例如:
=link_to 'Cancel', my_page_path
或者,如果您想要一个按钮:
= button_tag "Cancel", :type => 'button'
然后将其添加到您的控制器:
before_filter :check_for_cancel, :only => [:create, :update]
def check_for_cancel
if params[:commit] == "Cancel"
redirect_to my_page_path
end
end
我建议使用<button>
标记,而不是:commit
标记,因为参数: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
恕我直言,因为您依赖标志而不是(可能是)本地化的显示值,因此更加简洁。
button_to
似乎是实现相同目的的简单方法,但是必须将其放置在表单本身之外,但可以使用CSS轻松修复。
另外,要以更通用的方式解决此问题(也可以在尚未持久化的资源上编辑嵌套资源),可以为cancel创建一个单独的表单,该表单包含所有原始值作为隐藏字段。
简短而容易。
<%= link_to "Cancel", show_page %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.