2017-10-17 26 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