【发布时间】:2018-11-08 08:35:04
【问题描述】:
在任务控制器(动作索引)我有这一行:
@tasks = Task.where("title LIKE '%#{params[:q]}%'")
在视图中我有这样的 form_tag:
= form_tag tasks_path(format: :js), method: :get do |f|
= text_field_tag :q, params[:q]
= submit_tag :Search
它工作正常,在终端输出:
Started GET "/tasks.js?utf8=%E2%9C%93&q=example&commit=Search" for 127.0.0.1 at 2018-11-08 10:28:37 +0200
Processing by TasksController#index as JS
Parameters: {"utf8"=>"✓", "q"=>"example", "commit"=>"Search"}
Rendering welcome/index.html.haml
Task Load (0.4ms) SELECT "tasks".* FROM "tasks" WHERE (title LIKE '%example%')
但我需要使用 form_for 而不是 form_tag。 我的 form_for 表单:
= form_for tasks_path, method: :get, remote: true do |f|
= f.text_field :q, value: params[:q]
= f.submit :Search
终端输出:
Started GET "/index?utf8=%E2%9C%93&%2Ftasks%5Bq%5D=fdvdfvdfv&commit=Search" for 127.0.0.1 at 2018-11-08 10:30:11 +0200
Processing by WelcomeController#index as JS
Parameters: {"utf8"=>"✓", "/tasks"=>{"q"=>"fdvdfvdfv"}, "commit"=>"Search"}
Rendering welcome/index.html.haml within layouts/application
Task Load (0.4ms) SELECT "tasks".* FROM "tasks" WHERE (title LIKE '%%')
而且它不起作用,'%%' 之间为空。 也许你能帮帮我。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5