bogdan/datagrid

Receiving a 302 error when searching

mkwoodburn opened this issue · 4 comments

I have an issue when I'm trying to use search functionality. I am running a Rails 5 project on Ruby 2.7.2. When I inspect the request and response the correct datagrid is returned, but the page does not reload with the new datagrid table. If you would like more detail please let me know.

I have another side project that I am using datagrids and the search works perfectly.

Do you have any ideas why this would happen?

I have really enjoyed the functionality of this library, thank you all for the time and effort you have put in to develop it.

Thanks in advance
Matthew Woodburn

Hey, back in the good old days we were saying that our "telepathy team is on vacation".

I need to see your grid, controller and view source code.

Ok, sounds good. I can send you all three. - I did rename all the variables.

The error I'm getting in both Safari and Chrome is a 302.


Controller

def search
  # params[:param1].empty? & params[:param2].empty? & !params[:param3].empty?
  if !params[:param1].empty? & params[:param2].empty? & params[:param3].empty?
    @controller_grid =
    ControllersGrid.new(params[:controllers_grid]) do |scope|
      scope.where(id: controller.where(
        controller_type_id: ControllerType.ids[:param4],
        param1_id: Param1.where(name: params[:param1]).ids.first
      ).ids)
    end
end

Datagrid

class ControllersGrid
  include Datagrid

  scope { Controller }

  column(:params1_id) do |model|
    Param1.find(model.param1_id).name
  end
  column(:params5)
  column(:param6)
  column(:param7)
  column(:param8) do
    format('$ %0.2f', param8.to_s)
  end
  column(:param9)
  column(:param10)
  column(:id, header: 'Controller Id')
  column(:param3, header: 'param3 Id')
end

search.html.erb

<%= render "search" %>


<%= datagrid_table(@offer_grid) %>

_search.html.erb

<%= form_with url: 'path', method: :get do |form| %>
  <div class="offer-search-inline">
    <%= form.label :param1, "Filter for param1" %>
    <%= form.text_field :param1 %>
  </div>
  <div class="offer-search-inline">
    <%= form.label :param2, "Filter for param2" %>
    <%= form.text_field :param2 %>
  </div>
  <div class="offer-search-inline">
    <%= form.label :param3, "Filter for param3" %>
    <%= form.text_field :param3 %>
  </div>
  <div class='search-button offer-search-inline'>
    <%= form.submit "Filter" %>
  </div>
<% end %>

route

resources :controller do
  get 'search', on: :collection
end

You have a lot of typos:

- <%= datagrid_table(@offer_grid) %>
+ <%= datagrid_table(@controller_grid) %>
- if !params[:param1].empty? & params[:param2].empty? & params[:param3].empty?
+ if !params[:param1].empty? || !params[:param2].empty? || !params[:param3].empty?

Not sure if I got your logical condition correctly, but it looks completely wrong....

I got it figured out thanks.