首页 > 解决方案 > 将按钮单击匹配到表单标记内的新 Rails 控制器方法

问题描述

我有form_tag一个现有的 submit_tag 映射到 rails 控制器方法。我的.haml代码如下所示:

 .form-group
   =form_tag "/set_limits", {id: 'ec2-instance-limit-form'} do |form|
        = submit_tag "Increase Limits", {class: "btn btn-danger"}

/set_limits下面显示了将 url 与 rails 控制器的方法匹配的我的 routes.rb 文件的片段。

match '/set_limits', to: 'limits#handle_limit_request', via: [:post]

我现在在同一页面上添加了一个按钮。

%button.btn.btn-info(id="customer-status" type="button") Customer Status

但是,当我单击此按钮时,请求仍会路由到该handle_limit_request方法。我想要单击此按钮以通过 POST 路由到新方法的操作,例如limits#check_customer_status。如何将按钮单击路由到新的控制器方法,同时确保单击submit_tag静止路由的动作limits#handle_limit_request

标签: ruby-on-railsrubyhaml

解决方案


我想要单击此按钮以通过 POST 路由到新方法的操作,例如limits#check_customer_status

为此,请使用button_to

= button_to "Customer Status", '/check_customer_status', :method => :post, :form_class => "btn.btn-info", id: "customer-status"

注意 - 此按钮(Customer Status)在页面上的位置应超出form_tag范围,因为button_to内部也会生成表单,form within a form因此可能无法正常工作。


推荐阅读