Railsの中で適切なコントローラへのルーティングではありませんジョブモデルを介して。ここで検索フォームは、私はこの1つ上の数日間に苦労してきた5.1
def index
@jobs = if params[:address]
Job.joins(:user).where(users: { address: params[:address].downcase
}).paginate(page: params[:page], per_page: 3)
else
@jobs = Job.paginate(page: params[:page], per_page: 3).order('id DESC')
end
end
フォームされています:
<form class="navbar-form navbar-left">
<div class="form-group">
<%= 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 %>
</div>
ここ
は私のルートファイルである:ここに私のJobsControllerのインデックス方法がある
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 :jobs, only: [:show, :index]
resources :users do
resources :jobs
end
resources 'contacts', only: [:new, :create], path_names: { new: '' }
if Rails.env.development?
mount LetterOpenerWeb::Engine, at: "/letter_opener"
end
エンド
ジョブのルートはthですERE二回私は私のレールルートの
パートユーザー/訪問者でログインして非のインデックスとビューのアクションが利用できるようにする必要があるとして、示しています
私の問題があり、要求がルートに、時には失われること間違ったコントローラに行きます。私がJobsの#インデックスページにいる場合:http://localhost:3000/jobsと "Nantes"のような都市を検索してください。クエリが正常に実行さ:
Started GET "/jobs?utf8=%E2%9C%93&address=Nantes&commit=Rechercher" for
127.0.0.1 at 2017-11-20 08:34:48 +0400
Processing by JobsController#index as HTML
Parameters: {"utf8"=>"✓", "address"=>"Nantes", "commit"=>"Rechercher"}
Rendering jobs/index.html.erb within layouts/application
(0.4ms) SELECT COUNT(*) FROM "jobs" INNER JOIN "users" ON "users"."id" =
"jobs"."user_id" WHERE "users"."address" = $1 [["address", "nantes"]]
Job Load (0.6ms) SELECT "jobs".* FROM "jobs" INNER JOIN "users" ON
"users"."id" = "jobs"."user_id" WHERE "users"."address" = $1 LIMIT $2 OFFSET
$3 [["address", "nantes"], ["LIMIT", 3], ["OFFSET", 0]]
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1
LIMIT $2 [["id", 1], ["LIMIT", 1]]
CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" =
$1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
Rendered jobs/index.html.erb within layouts/application (43.9ms)
Rendered layouts/_header_out.html.erb (1.8ms)
Rendered layouts/_messages.html.erb (0.5ms)
Rendered layouts/_footer.html.erb (0.6ms)
Completed 200 OK in 119ms (Views: 101.0ms | ActiveRecord: 7.1ms)
を、私は私のルートページ、すなわちからクエリを実行している場合:StaticPagesController、クエリはStaticPagesControllerへとNOT JobsControllerに送信されます。
Started GET "/?utf8=%E2%9C%93&address=Nantes&commit=Rechercher" for 127.0.0.1
at 2017-11-20 08:37:49 +0400
Processing by StaticPagesController#home as HTML
Parameters: {"utf8"=>"✓", "address"=>"Nantes", "commit"=>"Rechercher"}
Rendering static_pages/home.html.erb within layouts/application
は、どのように私は確認してください私がどこにいるかにかかわらず、クエリは常に正しいコントローラに送信されますか?私がフォームで試したことは何も動作していないようです!君たちありがとう。
はあなた 'コントローラに応じて' form' URLを変更する必要があります'と' 'アクション '。あなたの検索フォームの一部のビューファイルコードで質問を更新してください。 – Emu
@Rodolpheあなたの 'form'は次のようになります:' form_tag(jobs_path、method::get) ' – hgsongra
皆さん、私は私の投稿を更新しました。はい、フォームは正しいです。しかしルーティングはまだ動作していない、と私は理由を知らない..... –