Rails paginated form not posting params occasionally











up vote
1
down vote

favorite












I'm running into an intermittent problem with one of my forms.
I've tried to implement a batch destroy, and it works most of the time, but 1 time out of 10 it won't work, in the console I get an empty POST request with no paramaters.



Here is my view:



<h4>Suggestions </h4>
<%= submit_tag "Delete selected", form: "suggestions-delete-form", class: 'btn btn-danger' %>
<p class="card-text">
<% if @suggestions %>
<div class="table-responsive-sm">
<table class="table-sm", id="suggestion-table">
<tbody>
<%= form_tag collection_batch_destroy_path(@collection), method: :post, id: "suggestions-delete-form" do %>
<% @suggestions.each do |s| %>
<tr id='suggestion'>
<th style="width: 4%"><%= check_box_tag "item_ids", s.id, false, class: "form-check .selectable-checkbox" %></th>
<td><%if s.search.term.include?("-") %>
<%= Hpricot.uxs s.search.term.capitalize %>
<% else %>
<%= Hpricot.uxs s.search.term.titleize %>
<% end %>
</td>
<td style="width: 4%"><%= link_to fa_icon('plus-circle'), collection_item_choose_path(@collection, s),{ method: :post, class: "btn btn-primary btn-sm text-right" } %>
</td>
<td style="width: 4%" id='delete-suggestion'><%= link_to fa_icon('trash'), collection_item_destroy_path(@collection, s),{ method: :post, class: "btn btn-primary btn-sm text-right" } %><br>
</td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
</div>
<% end %>
</p>


These are my routes:



  resources :sellers, only: [:show] do
resources :collections, shallow: true do
match 'item/choose', to: 'items#choose', via: 'post'
match 'item/remove', to: 'items#remove', via: 'post'
match 'item/destroy', to: 'items#destroy', via: 'post'
match 'batch_destroy', to: 'items#batch_destroy', via: 'post'
end
end


And here is my controller:



  def batch_destroy
@collection = Collection.find(params[:collection_id])
if params[:item_ids] && params[:item_ids].size > 0
Item.where(id: params[:item_ids]).update_all(suggestion: false)
flash[:success] = "Suggestions successfully deleted"
else
flash[:danger] = "No items were selected"
end
redirect_to collection_path(@collection)
end


Here is an example of a batch destroy that worked:



Started POST "/collections/67/batch_destroy" for 127.0.0.1 at 2018-11-07 20:16:19 +0200
Processing by ItemsController#batch_destroy as HTML
Parameters: {"commit"=>"Delete selected", "utf8"=>"✓", "authenticity_token"=>"zEuCw1VX689LwCBcbNsC9JOd2cSVzcc1LxtkFN+xV3I2ORT6r/5aWM8iaNwo5U2LLFF/1lQDIAHQOoVylb4N3A==", "item_ids"=>["12729", "12730", "12731", "12732", "12733", "12735", "12736"], "collection_id"=>"67"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Notification Load (0.5ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."recipient_id" = 1 ORDER BY "notifications"."id" DESC LIMIT $1 [["LIMIT", 3]]
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Seller Load (0.3ms) SELECT "sellers".* FROM "sellers" WHERE "sellers"."id" = $1 LIMIT $2 [["id", 6], ["LIMIT", 1]]
Shop Load (0.5ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = $1 LIMIT $2 [["id", 8], ["LIMIT", 1]]
Item Load (0.8ms) SELECT "items".* FROM "items" WHERE "items"."id" IN (12729, 12730, 12731, 12732, 12733, 12735, 12736)
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.552499"], ["id", 12729]]
(1.1ms) COMMIT
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.556805"], ["id", 12732]]
(2.2ms) COMMIT
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.562274"], ["id", 12735]]
(3.2ms) COMMIT
(0.2ms) BEGIN
SQL (0.5ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.569024"], ["id", 12736]]
(1.3ms) COMMIT
(0.3ms) BEGIN
SQL (1.0ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.573374"], ["id", 12730]]
(5.1ms) COMMIT
(0.1ms) BEGIN
SQL (0.7ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.582742"], ["id", 12731]]
(1.0ms) COMMIT
(0.1ms) BEGIN
SQL (0.7ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.586827"], ["id", 12733]]
(2.9ms) COMMIT
Collection Load (0.3ms) SELECT "collections".* FROM "collections" WHERE "collections"."id" = $1 LIMIT $2 [["id", 67], ["LIMIT", 1]]
Redirected to http://localhost:3000/collections/67
Completed 302 Found in 57ms (ActiveRecord: 26.3ms)


And here I'm doing the same action (selecting some items, clicking "Delete selected", but it results in... nothing:



Started POST "/collections/67/batch_destroy" for 127.0.0.1 at 2018-11-08 09:36:02 +0200
Processing by ItemsController#batch_destroy as HTML
Parameters: {"commit"=>"Delete selected", "collection_id"=>"67"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Notification Load (0.7ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."recipient_id" = 1 ORDER BY "notifications"."id" DESC LIMIT $1 [["LIMIT", 3]]
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Seller Load (0.5ms) SELECT "sellers".* FROM "sellers" WHERE "sellers"."id" = $1 LIMIT $2 [["id", 6], ["LIMIT", 1]]
Shop Load (0.3ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = $1 LIMIT $2 [["id", 8], ["LIMIT", 1]]
Item Load (0.5ms) SELECT "items".* FROM "items" WHERE "items"."id" IS NULL
Collection Load (0.2ms) SELECT "collections".* FROM "collections" WHERE "collections"."id" = $1 LIMIT $2 [["id", 67], ["LIMIT", 1]]
Redirected to http://localhost:3000/collections/67
Completed 302 Found in 13ms (ActiveRecord: 3.2ms)


As you can see, despite having checked some boxes, rails doesn't pass the corresponding IDs. I also get the flash message: "No items were selected".



This happens in both dev and production.
I would really appreciate any insight you might have. TIA!



EDIT:
Just removed will_paginate pagination on this form and now it works like a charm.
Anyone know what might be causing this?










share|improve this question
























  • Long shot but does this happen after you haven't clicked on the page in a while? I've noticed that your unsuccessful attempt does not contain the authenticity token.
    – ThorTL67
    18 hours ago










  • @ThorTL67 no, the selection and the action are immediate. Thanks for trying though :)
    – Maayan Naveh
    18 hours ago

















up vote
1
down vote

favorite












I'm running into an intermittent problem with one of my forms.
I've tried to implement a batch destroy, and it works most of the time, but 1 time out of 10 it won't work, in the console I get an empty POST request with no paramaters.



Here is my view:



<h4>Suggestions </h4>
<%= submit_tag "Delete selected", form: "suggestions-delete-form", class: 'btn btn-danger' %>
<p class="card-text">
<% if @suggestions %>
<div class="table-responsive-sm">
<table class="table-sm", id="suggestion-table">
<tbody>
<%= form_tag collection_batch_destroy_path(@collection), method: :post, id: "suggestions-delete-form" do %>
<% @suggestions.each do |s| %>
<tr id='suggestion'>
<th style="width: 4%"><%= check_box_tag "item_ids", s.id, false, class: "form-check .selectable-checkbox" %></th>
<td><%if s.search.term.include?("-") %>
<%= Hpricot.uxs s.search.term.capitalize %>
<% else %>
<%= Hpricot.uxs s.search.term.titleize %>
<% end %>
</td>
<td style="width: 4%"><%= link_to fa_icon('plus-circle'), collection_item_choose_path(@collection, s),{ method: :post, class: "btn btn-primary btn-sm text-right" } %>
</td>
<td style="width: 4%" id='delete-suggestion'><%= link_to fa_icon('trash'), collection_item_destroy_path(@collection, s),{ method: :post, class: "btn btn-primary btn-sm text-right" } %><br>
</td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
</div>
<% end %>
</p>


These are my routes:



  resources :sellers, only: [:show] do
resources :collections, shallow: true do
match 'item/choose', to: 'items#choose', via: 'post'
match 'item/remove', to: 'items#remove', via: 'post'
match 'item/destroy', to: 'items#destroy', via: 'post'
match 'batch_destroy', to: 'items#batch_destroy', via: 'post'
end
end


And here is my controller:



  def batch_destroy
@collection = Collection.find(params[:collection_id])
if params[:item_ids] && params[:item_ids].size > 0
Item.where(id: params[:item_ids]).update_all(suggestion: false)
flash[:success] = "Suggestions successfully deleted"
else
flash[:danger] = "No items were selected"
end
redirect_to collection_path(@collection)
end


Here is an example of a batch destroy that worked:



Started POST "/collections/67/batch_destroy" for 127.0.0.1 at 2018-11-07 20:16:19 +0200
Processing by ItemsController#batch_destroy as HTML
Parameters: {"commit"=>"Delete selected", "utf8"=>"✓", "authenticity_token"=>"zEuCw1VX689LwCBcbNsC9JOd2cSVzcc1LxtkFN+xV3I2ORT6r/5aWM8iaNwo5U2LLFF/1lQDIAHQOoVylb4N3A==", "item_ids"=>["12729", "12730", "12731", "12732", "12733", "12735", "12736"], "collection_id"=>"67"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Notification Load (0.5ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."recipient_id" = 1 ORDER BY "notifications"."id" DESC LIMIT $1 [["LIMIT", 3]]
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Seller Load (0.3ms) SELECT "sellers".* FROM "sellers" WHERE "sellers"."id" = $1 LIMIT $2 [["id", 6], ["LIMIT", 1]]
Shop Load (0.5ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = $1 LIMIT $2 [["id", 8], ["LIMIT", 1]]
Item Load (0.8ms) SELECT "items".* FROM "items" WHERE "items"."id" IN (12729, 12730, 12731, 12732, 12733, 12735, 12736)
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.552499"], ["id", 12729]]
(1.1ms) COMMIT
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.556805"], ["id", 12732]]
(2.2ms) COMMIT
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.562274"], ["id", 12735]]
(3.2ms) COMMIT
(0.2ms) BEGIN
SQL (0.5ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.569024"], ["id", 12736]]
(1.3ms) COMMIT
(0.3ms) BEGIN
SQL (1.0ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.573374"], ["id", 12730]]
(5.1ms) COMMIT
(0.1ms) BEGIN
SQL (0.7ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.582742"], ["id", 12731]]
(1.0ms) COMMIT
(0.1ms) BEGIN
SQL (0.7ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.586827"], ["id", 12733]]
(2.9ms) COMMIT
Collection Load (0.3ms) SELECT "collections".* FROM "collections" WHERE "collections"."id" = $1 LIMIT $2 [["id", 67], ["LIMIT", 1]]
Redirected to http://localhost:3000/collections/67
Completed 302 Found in 57ms (ActiveRecord: 26.3ms)


And here I'm doing the same action (selecting some items, clicking "Delete selected", but it results in... nothing:



Started POST "/collections/67/batch_destroy" for 127.0.0.1 at 2018-11-08 09:36:02 +0200
Processing by ItemsController#batch_destroy as HTML
Parameters: {"commit"=>"Delete selected", "collection_id"=>"67"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Notification Load (0.7ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."recipient_id" = 1 ORDER BY "notifications"."id" DESC LIMIT $1 [["LIMIT", 3]]
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Seller Load (0.5ms) SELECT "sellers".* FROM "sellers" WHERE "sellers"."id" = $1 LIMIT $2 [["id", 6], ["LIMIT", 1]]
Shop Load (0.3ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = $1 LIMIT $2 [["id", 8], ["LIMIT", 1]]
Item Load (0.5ms) SELECT "items".* FROM "items" WHERE "items"."id" IS NULL
Collection Load (0.2ms) SELECT "collections".* FROM "collections" WHERE "collections"."id" = $1 LIMIT $2 [["id", 67], ["LIMIT", 1]]
Redirected to http://localhost:3000/collections/67
Completed 302 Found in 13ms (ActiveRecord: 3.2ms)


As you can see, despite having checked some boxes, rails doesn't pass the corresponding IDs. I also get the flash message: "No items were selected".



This happens in both dev and production.
I would really appreciate any insight you might have. TIA!



EDIT:
Just removed will_paginate pagination on this form and now it works like a charm.
Anyone know what might be causing this?










share|improve this question
























  • Long shot but does this happen after you haven't clicked on the page in a while? I've noticed that your unsuccessful attempt does not contain the authenticity token.
    – ThorTL67
    18 hours ago










  • @ThorTL67 no, the selection and the action are immediate. Thanks for trying though :)
    – Maayan Naveh
    18 hours ago















up vote
1
down vote

favorite









up vote
1
down vote

favorite











I'm running into an intermittent problem with one of my forms.
I've tried to implement a batch destroy, and it works most of the time, but 1 time out of 10 it won't work, in the console I get an empty POST request with no paramaters.



Here is my view:



<h4>Suggestions </h4>
<%= submit_tag "Delete selected", form: "suggestions-delete-form", class: 'btn btn-danger' %>
<p class="card-text">
<% if @suggestions %>
<div class="table-responsive-sm">
<table class="table-sm", id="suggestion-table">
<tbody>
<%= form_tag collection_batch_destroy_path(@collection), method: :post, id: "suggestions-delete-form" do %>
<% @suggestions.each do |s| %>
<tr id='suggestion'>
<th style="width: 4%"><%= check_box_tag "item_ids", s.id, false, class: "form-check .selectable-checkbox" %></th>
<td><%if s.search.term.include?("-") %>
<%= Hpricot.uxs s.search.term.capitalize %>
<% else %>
<%= Hpricot.uxs s.search.term.titleize %>
<% end %>
</td>
<td style="width: 4%"><%= link_to fa_icon('plus-circle'), collection_item_choose_path(@collection, s),{ method: :post, class: "btn btn-primary btn-sm text-right" } %>
</td>
<td style="width: 4%" id='delete-suggestion'><%= link_to fa_icon('trash'), collection_item_destroy_path(@collection, s),{ method: :post, class: "btn btn-primary btn-sm text-right" } %><br>
</td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
</div>
<% end %>
</p>


These are my routes:



  resources :sellers, only: [:show] do
resources :collections, shallow: true do
match 'item/choose', to: 'items#choose', via: 'post'
match 'item/remove', to: 'items#remove', via: 'post'
match 'item/destroy', to: 'items#destroy', via: 'post'
match 'batch_destroy', to: 'items#batch_destroy', via: 'post'
end
end


And here is my controller:



  def batch_destroy
@collection = Collection.find(params[:collection_id])
if params[:item_ids] && params[:item_ids].size > 0
Item.where(id: params[:item_ids]).update_all(suggestion: false)
flash[:success] = "Suggestions successfully deleted"
else
flash[:danger] = "No items were selected"
end
redirect_to collection_path(@collection)
end


Here is an example of a batch destroy that worked:



Started POST "/collections/67/batch_destroy" for 127.0.0.1 at 2018-11-07 20:16:19 +0200
Processing by ItemsController#batch_destroy as HTML
Parameters: {"commit"=>"Delete selected", "utf8"=>"✓", "authenticity_token"=>"zEuCw1VX689LwCBcbNsC9JOd2cSVzcc1LxtkFN+xV3I2ORT6r/5aWM8iaNwo5U2LLFF/1lQDIAHQOoVylb4N3A==", "item_ids"=>["12729", "12730", "12731", "12732", "12733", "12735", "12736"], "collection_id"=>"67"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Notification Load (0.5ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."recipient_id" = 1 ORDER BY "notifications"."id" DESC LIMIT $1 [["LIMIT", 3]]
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Seller Load (0.3ms) SELECT "sellers".* FROM "sellers" WHERE "sellers"."id" = $1 LIMIT $2 [["id", 6], ["LIMIT", 1]]
Shop Load (0.5ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = $1 LIMIT $2 [["id", 8], ["LIMIT", 1]]
Item Load (0.8ms) SELECT "items".* FROM "items" WHERE "items"."id" IN (12729, 12730, 12731, 12732, 12733, 12735, 12736)
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.552499"], ["id", 12729]]
(1.1ms) COMMIT
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.556805"], ["id", 12732]]
(2.2ms) COMMIT
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.562274"], ["id", 12735]]
(3.2ms) COMMIT
(0.2ms) BEGIN
SQL (0.5ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.569024"], ["id", 12736]]
(1.3ms) COMMIT
(0.3ms) BEGIN
SQL (1.0ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.573374"], ["id", 12730]]
(5.1ms) COMMIT
(0.1ms) BEGIN
SQL (0.7ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.582742"], ["id", 12731]]
(1.0ms) COMMIT
(0.1ms) BEGIN
SQL (0.7ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.586827"], ["id", 12733]]
(2.9ms) COMMIT
Collection Load (0.3ms) SELECT "collections".* FROM "collections" WHERE "collections"."id" = $1 LIMIT $2 [["id", 67], ["LIMIT", 1]]
Redirected to http://localhost:3000/collections/67
Completed 302 Found in 57ms (ActiveRecord: 26.3ms)


And here I'm doing the same action (selecting some items, clicking "Delete selected", but it results in... nothing:



Started POST "/collections/67/batch_destroy" for 127.0.0.1 at 2018-11-08 09:36:02 +0200
Processing by ItemsController#batch_destroy as HTML
Parameters: {"commit"=>"Delete selected", "collection_id"=>"67"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Notification Load (0.7ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."recipient_id" = 1 ORDER BY "notifications"."id" DESC LIMIT $1 [["LIMIT", 3]]
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Seller Load (0.5ms) SELECT "sellers".* FROM "sellers" WHERE "sellers"."id" = $1 LIMIT $2 [["id", 6], ["LIMIT", 1]]
Shop Load (0.3ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = $1 LIMIT $2 [["id", 8], ["LIMIT", 1]]
Item Load (0.5ms) SELECT "items".* FROM "items" WHERE "items"."id" IS NULL
Collection Load (0.2ms) SELECT "collections".* FROM "collections" WHERE "collections"."id" = $1 LIMIT $2 [["id", 67], ["LIMIT", 1]]
Redirected to http://localhost:3000/collections/67
Completed 302 Found in 13ms (ActiveRecord: 3.2ms)


As you can see, despite having checked some boxes, rails doesn't pass the corresponding IDs. I also get the flash message: "No items were selected".



This happens in both dev and production.
I would really appreciate any insight you might have. TIA!



EDIT:
Just removed will_paginate pagination on this form and now it works like a charm.
Anyone know what might be causing this?










share|improve this question















I'm running into an intermittent problem with one of my forms.
I've tried to implement a batch destroy, and it works most of the time, but 1 time out of 10 it won't work, in the console I get an empty POST request with no paramaters.



Here is my view:



<h4>Suggestions </h4>
<%= submit_tag "Delete selected", form: "suggestions-delete-form", class: 'btn btn-danger' %>
<p class="card-text">
<% if @suggestions %>
<div class="table-responsive-sm">
<table class="table-sm", id="suggestion-table">
<tbody>
<%= form_tag collection_batch_destroy_path(@collection), method: :post, id: "suggestions-delete-form" do %>
<% @suggestions.each do |s| %>
<tr id='suggestion'>
<th style="width: 4%"><%= check_box_tag "item_ids", s.id, false, class: "form-check .selectable-checkbox" %></th>
<td><%if s.search.term.include?("-") %>
<%= Hpricot.uxs s.search.term.capitalize %>
<% else %>
<%= Hpricot.uxs s.search.term.titleize %>
<% end %>
</td>
<td style="width: 4%"><%= link_to fa_icon('plus-circle'), collection_item_choose_path(@collection, s),{ method: :post, class: "btn btn-primary btn-sm text-right" } %>
</td>
<td style="width: 4%" id='delete-suggestion'><%= link_to fa_icon('trash'), collection_item_destroy_path(@collection, s),{ method: :post, class: "btn btn-primary btn-sm text-right" } %><br>
</td>
</tr>
<% end %>
<% end %>
</tbody>
</table>
</div>
<% end %>
</p>


These are my routes:



  resources :sellers, only: [:show] do
resources :collections, shallow: true do
match 'item/choose', to: 'items#choose', via: 'post'
match 'item/remove', to: 'items#remove', via: 'post'
match 'item/destroy', to: 'items#destroy', via: 'post'
match 'batch_destroy', to: 'items#batch_destroy', via: 'post'
end
end


And here is my controller:



  def batch_destroy
@collection = Collection.find(params[:collection_id])
if params[:item_ids] && params[:item_ids].size > 0
Item.where(id: params[:item_ids]).update_all(suggestion: false)
flash[:success] = "Suggestions successfully deleted"
else
flash[:danger] = "No items were selected"
end
redirect_to collection_path(@collection)
end


Here is an example of a batch destroy that worked:



Started POST "/collections/67/batch_destroy" for 127.0.0.1 at 2018-11-07 20:16:19 +0200
Processing by ItemsController#batch_destroy as HTML
Parameters: {"commit"=>"Delete selected", "utf8"=>"✓", "authenticity_token"=>"zEuCw1VX689LwCBcbNsC9JOd2cSVzcc1LxtkFN+xV3I2ORT6r/5aWM8iaNwo5U2LLFF/1lQDIAHQOoVylb4N3A==", "item_ids"=>["12729", "12730", "12731", "12732", "12733", "12735", "12736"], "collection_id"=>"67"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Notification Load (0.5ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."recipient_id" = 1 ORDER BY "notifications"."id" DESC LIMIT $1 [["LIMIT", 3]]
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Seller Load (0.3ms) SELECT "sellers".* FROM "sellers" WHERE "sellers"."id" = $1 LIMIT $2 [["id", 6], ["LIMIT", 1]]
Shop Load (0.5ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = $1 LIMIT $2 [["id", 8], ["LIMIT", 1]]
Item Load (0.8ms) SELECT "items".* FROM "items" WHERE "items"."id" IN (12729, 12730, 12731, 12732, 12733, 12735, 12736)
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.552499"], ["id", 12729]]
(1.1ms) COMMIT
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.556805"], ["id", 12732]]
(2.2ms) COMMIT
(0.2ms) BEGIN
SQL (0.6ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.562274"], ["id", 12735]]
(3.2ms) COMMIT
(0.2ms) BEGIN
SQL (0.5ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.569024"], ["id", 12736]]
(1.3ms) COMMIT
(0.3ms) BEGIN
SQL (1.0ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.573374"], ["id", 12730]]
(5.1ms) COMMIT
(0.1ms) BEGIN
SQL (0.7ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.582742"], ["id", 12731]]
(1.0ms) COMMIT
(0.1ms) BEGIN
SQL (0.7ms) UPDATE "items" SET "suggestion" = $1, "updated_at" = $2 WHERE "items"."id" = $3 [["suggestion", "f"], ["updated_at", "2018-11-07 18:16:19.586827"], ["id", 12733]]
(2.9ms) COMMIT
Collection Load (0.3ms) SELECT "collections".* FROM "collections" WHERE "collections"."id" = $1 LIMIT $2 [["id", 67], ["LIMIT", 1]]
Redirected to http://localhost:3000/collections/67
Completed 302 Found in 57ms (ActiveRecord: 26.3ms)


And here I'm doing the same action (selecting some items, clicking "Delete selected", but it results in... nothing:



Started POST "/collections/67/batch_destroy" for 127.0.0.1 at 2018-11-08 09:36:02 +0200
Processing by ItemsController#batch_destroy as HTML
Parameters: {"commit"=>"Delete selected", "collection_id"=>"67"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Notification Load (0.7ms) SELECT "notifications".* FROM "notifications" WHERE "notifications"."recipient_id" = 1 ORDER BY "notifications"."id" DESC LIMIT $1 [["LIMIT", 3]]
User Load (0.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Seller Load (0.5ms) SELECT "sellers".* FROM "sellers" WHERE "sellers"."id" = $1 LIMIT $2 [["id", 6], ["LIMIT", 1]]
Shop Load (0.3ms) SELECT "shops".* FROM "shops" WHERE "shops"."id" = $1 LIMIT $2 [["id", 8], ["LIMIT", 1]]
Item Load (0.5ms) SELECT "items".* FROM "items" WHERE "items"."id" IS NULL
Collection Load (0.2ms) SELECT "collections".* FROM "collections" WHERE "collections"."id" = $1 LIMIT $2 [["id", 67], ["LIMIT", 1]]
Redirected to http://localhost:3000/collections/67
Completed 302 Found in 13ms (ActiveRecord: 3.2ms)


As you can see, despite having checked some boxes, rails doesn't pass the corresponding IDs. I also get the flash message: "No items were selected".



This happens in both dev and production.
I would really appreciate any insight you might have. TIA!



EDIT:
Just removed will_paginate pagination on this form and now it works like a charm.
Anyone know what might be causing this?







ruby-on-rails forms post will-paginate






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 15 hours ago

























asked 21 hours ago









Maayan Naveh

868




868












  • Long shot but does this happen after you haven't clicked on the page in a while? I've noticed that your unsuccessful attempt does not contain the authenticity token.
    – ThorTL67
    18 hours ago










  • @ThorTL67 no, the selection and the action are immediate. Thanks for trying though :)
    – Maayan Naveh
    18 hours ago




















  • Long shot but does this happen after you haven't clicked on the page in a while? I've noticed that your unsuccessful attempt does not contain the authenticity token.
    – ThorTL67
    18 hours ago










  • @ThorTL67 no, the selection and the action are immediate. Thanks for trying though :)
    – Maayan Naveh
    18 hours ago


















Long shot but does this happen after you haven't clicked on the page in a while? I've noticed that your unsuccessful attempt does not contain the authenticity token.
– ThorTL67
18 hours ago




Long shot but does this happen after you haven't clicked on the page in a while? I've noticed that your unsuccessful attempt does not contain the authenticity token.
– ThorTL67
18 hours ago












@ThorTL67 no, the selection and the action are immediate. Thanks for trying though :)
– Maayan Naveh
18 hours ago






@ThorTL67 no, the selection and the action are immediate. Thanks for trying though :)
– Maayan Naveh
18 hours ago



















active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














 

draft saved


draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53202915%2frails-paginated-form-not-posting-params-occasionally%23new-answer', 'question_page');
}
);

Post as a guest





































active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes
















 

draft saved


draft discarded



















































 


draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53202915%2frails-paginated-form-not-posting-params-occasionally%23new-answer', 'question_page');
}
);

Post as a guest




















































































Popular posts from this blog

Schultheiß

Verwaltungsgliederung Dänemarks

Liste der Kulturdenkmale in Wilsdruff