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