Activity
Dear All,
My name is Rodolphe, I am a new member of Go Rails. I've fell I love with Rails a year ago! but gosh I so struggle sometimes to comprehend what I'm doing :( . Anyway here is my question.
I have a simple search form in my navbar that runs a search in the :address column of my Users table through the jobs_path (nested resources):
Here is the form:
        
<%= simple_form_for(jobs_path, method: :get) do %>
<%= text_field_tag :address, params[:address], placeholder: " Votre Ville..." %>
<%= submit_tag 'Rechercher', class:'btn btn-default' %>
<% end %>
here is the routes file:
Rails.application.routes.draw do
 devise_for :users
 get 'static_pages/home'
 get 'static_pages/faq'
 get 'static_pages/about'
 get 'static_pages/cgu'
 root   'static_pages#home'
 get    '/faq',    to: 'static_pages#faq'
 get    '/about',   to: 'static_pages#about'
 get    '/contact', to: 'static_pages#contact'
 get    '/cgu',     to: 'static_pages#cgu'
 get    '/signup',  to: 'users#new'
 get    '/login',   to: 'sessions#new'
 post   '/login',   to: 'sessions#create'
 delete '/logout',  to: 'sessions#destroy'
resources :users, only: [:show, :index]
 resources :jobs
 resources :users do
  resources :jobs
 end
end
The user model shows:
        has_many :jobs, dependent: :destroy
And the Job model:
        belongs_to :user
My Jobs controller shows:
def index
    @jobs = if params[:address]
        Job.joins(:user).where(users: { address: params[:address].downcase 
    }).paginate(page: params[:page], per_page: 4)
    else
         @jobs = Job.paginate(page: params[:page], per_page: 4).order('id DESC')
    end
end
rails routes shows:
         Prefix Verb                                URI Pattern                                  Controller#Action
    new_user_session GET          /users/sign_in(.:format)                     devise/sessions#new
        user_session POST            /users/sign_in(.:format)                     devise/sessions#create
 destroy_user_session DELETE /users/sign_out(.:format)                    devise/sessions#destroy
   new_user_password GET    /users/password/new(.:format)           devise/passwords#new
  edit_user_password GET    / users/password/edit(.:format)            devise/passwords#edit
       user_password PATCH     /users/password(.:format)                   devise/passwords#update
                     PUT                       /users/password(.:format)                  devise/passwords#update
                     POST                     /users/password(.:format)                 devise/passwords#create
cancel_user_registration GET      /users/cancel(.:format)                      devise/registrations#cancel
   new_user_registration GET      /users/sign_up(.:format)                     devise/registrations#new
  edit_user_registration GET         /users/edit(.:format)                           devise/registrations#edit
       user_registration PATCH            /users(.:format)                              devise/registrations#update
                         PUT                             /users(.:format)                              devise/registrations#update
                         DELETE                       /users(.:format)                              devise/registrations#destroy
                         POST                           /users(.:format)                             devise/registrations#create
   new_user_confirmation GET    /users/confirmation/new(.:format)      devise/confirmations#new
       user_confirmation GET    /   users/confirmation(.:format)                devise/confirmations#show
                         POST                   /users/confirmation(.:format)               devise/confirmations#create
         new_user_unlock GET      /users/unlock/new(.:format)                 devise/unlocks#new
             user_unlock GET                 /users/unlock(.:format)                    devise/unlocks#show
                         POST                       /users/unlock(.:format)                     devise/unlocks#create
       static_pages_home GET    /static_pages/home(.:format)               static_pages#home
        static_pages_faq GET    /static_pages/faq(.:format)                       static_pages#faq
      static_pages_about GET    /static_pages/about(.:format)                 static_pages#about
        static_pages_cgu GET    /static_pages/cgu(.:format)                      static_pages#cgu
                    root GET    /                                                                             static_pages#home
                     faq GET                                   /faq(.:format)                          static_pages#faq
                   about GET                              /about(.:format)                        static_pages#about
                 contact GET                             /contact(.:format)                      static_pages#contact
                     cgu GET                                  /cgu(.:format)                          static_pages#cgu
                  signup GET                              /signup(.:format)                       users#new
                   login GET                                  /login(.:format)                        sessions#new
                         POST                                   /login(.:format)                        sessions#create
                  logout DELETE                         /logout(.:format)                       sessions#destroy
                   users GET                                 /users(.:format)                        users#index
                    user GET                                 /users/:id(.:format)                    users#show
                    jobs GET                                   /jobs(.:format)                         jobs#index
                         POST                                    /jobs(.:format)                         jobs#create
                 new_job GET                           /jobs/new(.:format)                     jobs#new
                edit_job GET                              /jobs/:id/edit(.:format)                jobs#edit
                     job GET                                    /jobs/:id(.:format)                     jobs#show
                         PATCH                                  /jobs/:id(.:format)                     jobs#update
                         PUT                                      /jobs/:id(.:format)                     jobs#update
                         DELETE                                /jobs/:id(.:format)                     jobs#destroy
               user_jobs GET                      /users/:user_id/jobs(.:format)          jobs#index
                         POST                           /users/:user_id/jobs(.:format)          jobs#create
            new_user_job GET             /users/:user_id/jobs/new(.:format)      jobs#new
           edit_user_job GET               /users/:user_id/jobs/:id/edit(.:format) jobs#edit
                user_job GET                     /users/:user_id/jobs/:id(.:format)      jobs#show
                         PATCH                       /users/:user_id/jobs/:id(.:format)      jobs#update
                         PUT                           /users/:user_id/jobs/:id(.:format)      jobs#update
                         DELETE                      /users/:user_id/jobs/:id(.:format)      jobs#destroy
                         GET                                      /users(.:format)                        users#index
                         POST                                   /users(.:format)                        users#create
                new_user GET                         /users/new(.:format)                    users#new
               edit_user GET                           /users/:id/edit(.:format)               users#edit
                         GET                                     /users/:id(.:format)                    users#show
                         PATCH                                 /users/:id(.:format)                    users#update
                         PUT                                      /users/:id(.:format)                    users#update
                         DELETE                                /users/:id(.:format)                    users#destroy
Yes, the jobs: route is there twice as I need to access the Jobs actions for visitors (outside of Devise).
My problem is, that the request gets lost in routes and sometimes goes to the wrong controller. If I'm on the Jobs#index page : http://localhost:3000/jobs and run a search for a city like "Nantes". The query runs fine:
            Started GET "/jobs" for 127.0.0.1 at 2017-11-16 10:47:07 +0400
            Processing by JobsController#index as HTML
            Rendering jobs/index.html.erb within layouts/application
            (0.4ms)  SELECT COUNT(*) FROM "jobs"
            Job Load (0.4ms)  SELECT  "jobs".* FROM "jobs" ORDER BY id DESC LIMIT $1 .......................
If I'm running the query from my root page ie: StaticPagesController, the query is sent to StaticPagesController and NOT to JobsController:
            Started GET "/?utf8=%E2%9C%93&address=Nantes&commit=Rechercher" for 127.0.0.1 
            at 2017-11-16 12:11:48 +0400
            Processing by StaticPagesController#home as HTML
            Parameters: {"utf8"=>"✓", "address"=>"Nantes", "commit"=>"Rechercher"} ..................
How do I make sure the query is always sent to the correct controller, regardless of where I am?
Sorry for the looong question!
I hope someone has a solution....Thank you in advance               
