2016-01-12 2 views
0

Итак, у меня есть этот код в моих представлениях, чтобы создать кнопку, которая одобряет все 5 звездных отзывов. Проблема, с которой я сталкиваюсь, заключается в том, что button_to не скрывает параметры, а order_ids - около 200 объектов заказа. Поэтому, когда я нажимаю на кнопку, я получаю ошибкуИспользование form_tag для создания кнопки

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> 
+0

В конце вы можете добавить 'params: {}'. Как 'params: {order_ids: @orders}' – uday

ответ

0

Я рекомендую делать это таким образом -

  1. Это плохая идея, чтобы отправить столько данных через URL
  2. У вас есть form и скрытое поле, которое содержит значения для идентификаторов заказов (и, возможно, рейтинг, если у вас не настроены ваши маршруты)
  3. Иметь простую кнопку, которая просто отправляет форму при нажатии

    <%= 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 -%> 
    
0

попробовать что-то вроде этого:

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

Вы можете просто добавить params:{} в конце концов your button_to

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

Примечание: по умолчанию метод будет пост, поэтому вам не нужно указывать метод.

Надеюсь, это поможет!

Смежные вопросы