2017-10-17 20 views
0

這是一段時間,因爲我只需要一個form_forRails的form_tag不POSTing,在源頁面上獲得

現在我試圖設置一個管理區域搜索,其中搜索框位於菜單欄中。但不是POST到結果路徑,而是使用GET參數重新加載現有頁面,包括authenticity_token

所以我的設置:

的Gemfile

source 'https://rubygems.org' 
ruby '2.2.3' 
gem 'rails', '4.2.3' 
# And so on.... 

的routes.rb

namespace :admin do 
    resources :results do #search results 
     collection do 
      get :display 
     end 
    end 

    # many more routes here 
end 

管理/ results_controller.rb

class Admin::ResultsController < ApplicationController 

    def display 
     @results = Elasticsearch::Model.search(params[:query], [Article]).paginate(page: params[:page], per_page: 30) 
     respond_to do |format| 
      format.html # index.html.erb 
     end 
    end 

    private 

     # Don't think this is really relevant, adding out of desparation 
     def result_params 
      params.require(:result).permit(:query) 
     end 
end 

在我的通用管理欄:

<%= form_tag(display_admin_results_path, method: :post) do %> 
    <%= text_field_tag :query, params[:query], {class: "form-control", placeholder: "Search"} %> 
    <span class="input-group-btn"><%= submit_tag "&rarr;".html_safe, class: "btn btn-success" %></span> 
<% end %> 

日誌不顯示重定向的跡象,丁目控制檯顯示沒有JavaScript的「博克」。

不提交該表格,並得到發送到/admin/results/display甚至/admin/results/display?query=blah我流汗

?utf8=✓&authenticity_token=j3w4dtBbFLzJzqWGZ9x4Q4GsUi%2FxmjYFrPjdzm8ccLKdxpOR0KwrX2hIAzXkR96cuTVgwG1sbYBKDdSO%2F3O6Wg%3D%3D&query=hello&commit=→ 

它一定是明顯的東西...在「衛生署」的時刻準備的。

+0

這是你沒有使用的問題ajax請致電 –

回答

0

問題出在你的路線上。 在您的控制檯中寫入rails routes(或rake routes),您將看到它預計會爲您的display_admin_results_path獲取方法。所以你用GET方法訪問你的控制器。

您的路線:

display_admin_results GET /admin/results/display(.:format) admin/results#display 
     admin_results GET /admin/results(.:format)   admin/results#index 
         POST /admin/results(.:format)   admin/results#create 
     admin_result GET /admin/results/:id(.:format)  admin/results#show 
         PATCH /admin/results/:id(.:format)  admin/results#update 
         PUT /admin/results/:id(.:format)  admin/results#update 
         DELETE /admin/results/:id(.:format)  admin/results#destroy 

你應該實現你的搜索查詢,因此它將使用POST,並返回相應的視圖(這是defenetly沒有索引)。

此外,您呈現的方法將搜索具有相應名稱的視圖,因此您可能需要創建display.html.erb file或指定要在控制器中使用的視圖。

+0

感謝您的建議!自從我改變路由到''post:display''並且我運行'rake routes''時''POST/admin/results/display(。:format)''。我想知道是否按照@TusharPal與AJAX有關,但我不得不說我不確定從那個建議開始。 – Paulus

+0

您是否爲此操作編寫了單獨的視圖? @Paulus – Lun4i

+0

是的:''views/admin/results/display.html.erb'' – Paulus