【问题标题】:Is there a way to pass params when clicking submit button in simple_form view in rails 3.2.12?在 rails 3.2.12 的 simple_form 视图中单击提交按钮时,有没有办法传递参数?
【发布时间】:2013-07-29 04:56:35
【问题描述】:

在simple_form视图中,提交按钮是这样的:

<%= f.button :submit, 'Save' %>

当单击Save 按钮时,我们正在尝试传递参数subaction。单击按钮后,params[:subaction] 的值应为“更新”。这是我们在视图中尝试过的,但没有奏效:

<%= f.button :submit, 'Save', :subaction => 'update' %>

点击Save 按钮时,有没有办法在params[:subaction] 中传递一个值?

【问题讨论】:

    标签: ruby-on-rails-3 simple-form


    【解决方案1】:

    使用名称和值选项。

       <%= f.button  :submit , name: "subaction",value: "update"%>
    

    在您的控制器中,您将获得值为“update”的 params[:subaction]

    【讨论】:

    • 试过 BUTTONS_CLS['action'] %> and for_which 是一个字符串和参数 [: subaction] 为零。它没有用。
    • 我正在使用此代码并且正在工作。无论参数是否发送,请在提交表单时查看日志。
    • 刚刚尝试过这个,它可以满足我的需要,但是它将提交按钮的文本更改为“值:”的值 - 有没有办法保持名称/值向控制器提供信息它还需要我为提交按钮选择的名称吗?即:按钮文本应该是“下一个学生”,但它是“2”&lt;%= f.submit "Next student", :class =&gt; 'big_button round unselectable', name: "student_group_id", value: @student_group.id %&gt;
    • 实际上我用 hidden_​​field_tag 代替了它,不过 +1,谢谢!
    • 如果你想传递超过 1 个参数怎么办?
    【解决方案2】:

    正如达克斯指出的,

    <%= hidden_field_tag(:subaction, 'update') %>
    <%= f.button :submit, 'Save' %>
    

    这将通过隐藏字段向路由控制器操作提供字符串值“更新”。然后控制器可以使用

    检索它
    params[:subaction]
    

    【讨论】:

    • 最主要的是,你hidden_field_tag必须没有f,这是指型号。
    【解决方案3】:

    通过指定f.button :button, type: 'submit',我们可以使用namevalue属性如下,使用单个参数提交。值得注意的是,提交的值(例如,'cake')可能与按钮文本(例如,'The Best Cake')不同。

    _form.html.erb

    <%= f.button :button, 'The Best Cake', type: 'submit', name: 'dessert_choice', value: 'cake' %>
    <%= f.button :button, 'The Best Pie', type: 'submit', name: 'dessert_choice', value: 'pie' %>
    

    控制器

    def controller_action
      dessert_choice = params[:dessert_choice] # 'cake' or 'pie'
    end
    

    这种方法避免了上面评论中提到的@dax 对隐藏输入的需要。

    使用 Rails 4.2 在 Simple Form 3.3.1 上测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多