Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从浏览器检索用户输入以在控制器中用于第三方查询字符串rails_Javascript_Ruby On Rails_Ruby_Api_Ruby On Rails 5 - Fatal编程技术网

Javascript 从浏览器检索用户输入以在控制器中用于第三方查询字符串rails

Javascript 从浏览器检索用户输入以在控制器中用于第三方查询字符串rails,javascript,ruby-on-rails,ruby,api,ruby-on-rails-5,Javascript,Ruby On Rails,Ruby,Api,Ruby On Rails 5,我只是想从我的表单标签获取一个用户输入到我的rails控制器中 一般的想法是用户在text\u字段\u标签中输入一些文本 app/views/pages/home.html.erb 然后,我尝试从rails控制器检索这些参数,以添加到查询字符串中,从而向第三方进行api调用 def home term = params[:search] @stats = HTTParty.get("https://api.ritekit.com/v1/stats/history/

我只是想从我的
表单标签
获取一个用户输入到我的rails控制器中

一般的想法是用户在
text\u字段\u标签中输入一些文本

app/views/pages/home.html.erb

然后,我尝试从rails控制器检索这些参数,以添加到查询字符串中,从而向第三方进行api调用

def home
        term = params[:search]
        @stats = HTTParty.get("https://api.ritekit.com/v1/stats/history/#{term}?tags=&client_id=81c7fa4e99adc98e9455c86ee38a4c1bbe3f97328732")
        gon.queries = @stats
end
Rails控制台显示正确的参数

Started GET "/?utf8=%E2%9C%93&search=trump" for 148.75.220.61 at 2018-08-21 00:28:49 +0000
Cannot render console from 148.75.220.61! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by PagesController#home as JS
  Parameters: {"utf8"=>"✓", "search"=>"trump"}
  User Load (0.6ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  Rendering pages/home.html.erb within layouts/application
  Rendered pages/home.html.erb within layouts/application (1.2ms)
  Rendered shared/_nav.html.erb (0.8ms)
Completed 200 OK in 1182ms (Views: 71.4ms | ActiveRecord: 0.6ms)
但是当
term=params[:search]
显示为
nil
时,除非我重新加载页面,否则参数将保留在浏览器中,然后出现预期结果。检索到的数据用于填充我设置的数据表


任何帮助都将不胜感激。

问题是您试图在控制器中检索
term=params[:search]
,这将从
表单标签
部分获取值。由于这是一个远程表单,您需要设置如下内容:

respond_to do |format|
  format.js {}
end
现在,您可以将所需的数据附加到此
home.js.erb
文件中的表中。您不需要编写类似于
appendParamToUrl
的JavaScript函数

---更新---
当页面加载时,此行将获取url中的值,因此第一次,params[:search]为nil。当您点击submit按钮时,服务器会感到困惑,因为您有两个参数[:search],一个在url中,另一个在text_field_tag中。
您需要确定需要先获得哪一个。

将搜索更改为url中的查询如何?然后您可以在控制器中检查param[:query]和param[:search],我确信其中一个具有非nil值。

但当term=params[:search]显示为nil时,除非我重新加载页面,否则参数将保留在浏览器中,然后出现预期结果。-请您详细介绍一下。尝试将
window.history.pushState()
替换为
window.location=window.location.href+'?search='+term
如何
format.js
修复
nil
参数[:search]的值?@JagdeepSingh我再次阅读了这个问题,发现在这个简单的操作中您可能有两个问题。使用不引人注目的JavaScript可以帮助您浏览Rails Ajax部分。@JagdeepSingh我能够通过在控制器中创建自定义操作来解决
nil
问题,并且它能够从
params[:search]
获取搜索查询。感谢您向我介绍了低调JS的概念和
respond\u to
方法。我能够按照建议去掉table.js文件中的
appendParamTour
函数。谢谢大家帮我解决了这个问题。
Started GET "/?utf8=%E2%9C%93&search=trump" for 148.75.220.61 at 2018-08-21 00:28:49 +0000
Cannot render console from 148.75.220.61! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by PagesController#home as JS
  Parameters: {"utf8"=>"✓", "search"=>"trump"}
  User Load (0.6ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  Rendering pages/home.html.erb within layouts/application
  Rendered pages/home.html.erb within layouts/application (1.2ms)
  Rendered shared/_nav.html.erb (0.8ms)
Completed 200 OK in 1182ms (Views: 71.4ms | ActiveRecord: 0.6ms)
respond_to do |format|
  format.js {}
end