繁体   English   中英

Ruby on Rails:如何在 form_tag 中实现取消按钮

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM