使用form_tag创建一个按钮

时间:2016-01-12 21:38:24

标签: ruby-on-rails ruby ruby-on-rails-4

所以我在我的视图中有这个代码来创建一个批准所有5星评价的按钮。我面临的问题是button_to并不隐藏参数,而order_ids大约是200个订单对象。所以当我点击按钮时,我收到错误

Request-URI Too Large WEBrick::HTTPStatus::RequestURITooLarge

我想我需要使用form_tag帮助器,但我不太确定如何使用form_tag制作按钮。或者如何链接这两件事。

<div style="margin: 0 0 50px 0">
  <%= button_to "Approve reviews with 5 stars",
    { action: :approve_reviews, order_ids: @orders, rating: 5 }
    , method: :post %>
</div>

3 个答案:

答案 0 :(得分:1)

您最后可以将params:{}添加到your button_to

<%= button_to "Approve reviews with 5 stars", action: :approve_reviews, params: {order_ids: @orders, rating: 5} %>

注意:默认情况下,该方法会发布,因此您无需指定方法。

希望它有所帮助!

答案 1 :(得分:0)

尝试这样的事情:

<%= form_tag({ action: :approve_reviews, rating: 5 }) do -%>
  <%= hidden_field_tag 'order_ids', @orders %>
  <%= submit_tag 'Approve reviews with 5 stars' %>
<%= end -%>

答案 2 :(得分:0)

我建议这样做 -

  1. 通过网址
  2. 发送大量数据是一个坏主意
  3. form和隐藏字段,其中包含订单ID的值(可能是评分,除非您为其配置了路线)
  4. 有一个简单的按钮,只需在点击时提交表单

    <%= form_tag({ :action => :approve_reviews }) do -%>
        <%= hidden_field_tag :order_ids, :value => @orders %>
        <%= hidden_field_tag :rating, :value => 5 %>
        <%= submit_tag "Approve reviews with 5 stars" %>
     <% end -%>