我认为这应该是一个简单的问题,但我现在无法理解。整天编码,需要另一套眼睛。
正在显示当前网址:
http://localhost:3000/q?utf8=✓&query%5Bquery%5D=testing
而不是
http://localhost:3000/q?query=testing
的routes.rb
Rails.application.routes.draw do
resources :biz do
member do
get 'photo'
end
end
get '/q' => 'search#index', as: :search
root 'welcome#index'
end
欢迎/ index.haml
= simple_form_for :query, url: search_path, method: "get" do |q|
= q.input :query
我有一个 search_controller.rb
class SearchController < ApplicationController
def index
if params.has_key?(:query)
@query = Model.q(params[:query])
else
redirect_to root_path
end
end
end
我需要修理或添加什么?
来自检查员的表格
<form novalidate="novalidate" class="simple_form /q" action="/q" accept-charset="UTF-8" method="get">
<input name="utf8" type="hidden" value="✓">
<div class="form-group string required query_query">
<label class="string required control-label" for="query_query">
<abbr title="required"></abbr> Query
</label>
<input class="string required form-control" type="text" name="query[query]" id="query_query">
</div>
</form>
答案 0 :(得分:2)
删除/:查询,将其作为查询参数发送,而不是路径参数。
把它/q
也可能必须是
= simple_form_for :search, url: search_path do |q|
表单将提交http://example.com/q?query=this而不是http://example.com/q/this/
网址问题,
问题是简单的形式是将它包装在模型中。所以你的参数将是params[:query][:query]
输入。您可以text_field_tag 'query'
代替q.input :query