Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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,并带有_Javascript_Ruby On Rails_Ruby_Ruby On Rails 5_Httparty - Fatal编程技术网

控制器操作值未传递给javascript,并带有

控制器操作值未传递给javascript,并带有,javascript,ruby-on-rails,ruby,ruby-on-rails-5,httparty,Javascript,Ruby On Rails,Ruby,Ruby On Rails 5,Httparty,这个问题让他相当困惑。我有一个简单的表单,它有一个remote:true方法。我只是试图从表单中获取用户输入,并将其发送到javascript以供进一步使用 /main/app/controllers/querys\u controller.rb class Query < ApplicationRecord def self.api_response(term) url = "https://api.ritekit.com/v1/stat

这个问题让他相当困惑。我有一个简单的表单,它有一个
remote:true
方法。我只是试图从表单中获取用户输入,并将其发送到javascript以供进一步使用

/main/app/controllers/querys\u controller.rb

    class Query < ApplicationRecord

        def self.api_response(term)
            url = "https://api.ritekit.com/v1/stats/history/#{term}?tags=&client_id="
            api = "1234567890123456789"
            return HTTParty.get(url + api)
         end        
 end
<%= form_tag queries_path, method: :get, remote: true do %>
    <%= text_field_tag :query %><br>
    <%= submit_tag 'Search' %>
<% end %>
<!DOCTYPE html>
<html lang="en">
  <head>
    <%= include_gon %>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
    <%= stylesheet_link_tag    "application" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
        <script src="https://cdn.datatables.net/plug-ins/1.10.19/api/sum().js"></script>
        <link href="https://fonts.googleapis.com/css?family=Righteous" rel="stylesheet">
  </head>
在控制器中,当我使用pry时,我期望的所有值都在那里,但是当涉及到发送到javascript的gon值时,它总是
未定义的

def index
    search_term = params[:query]
    @stats = Query.api_response(search_term)
    gon.stats = @stats

    respond_to do |format|
        format.js
        format.html
    end
  end
/main/app/models/query.rb

    class Query < ApplicationRecord

        def self.api_response(term)
            url = "https://api.ritekit.com/v1/stats/history/#{term}?tags=&client_id="
            api = "1234567890123456789"
            return HTTParty.get(url + api)
         end        
 end
<%= form_tag queries_path, method: :get, remote: true do %>
    <%= text_field_tag :query %><br>
    <%= submit_tag 'Search' %>
<% end %>
<!DOCTYPE html>
<html lang="en">
  <head>
    <%= include_gon %>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
    <%= stylesheet_link_tag    "application" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
        <script src="https://cdn.datatables.net/plug-ins/1.10.19/api/sum().js"></script>
        <link href="https://fonts.googleapis.com/css?family=Righteous" rel="stylesheet">
  </head>
/main/app/views/layouts/application.html.erb

    class Query < ApplicationRecord

        def self.api_response(term)
            url = "https://api.ritekit.com/v1/stats/history/#{term}?tags=&client_id="
            api = "1234567890123456789"
            return HTTParty.get(url + api)
         end        
 end
<%= form_tag queries_path, method: :get, remote: true do %>
    <%= text_field_tag :query %><br>
    <%= submit_tag 'Search' %>
<% end %>
<!DOCTYPE html>
<html lang="en">
  <head>
    <%= include_gon %>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
    <%= stylesheet_link_tag    "application" %>
    <%= javascript_include_tag "application" %>
    <%= csrf_meta_tags %>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
        <script src="https://cdn.datatables.net/plug-ins/1.10.19/api/sum().js"></script>
        <link href="https://fonts.googleapis.com/css?family=Righteous" rel="stylesheet">
  </head>

我也尝试过

<%= content_tag "div", id: "foobar", data: {value: @stats} do %><% end %>

当我使用jQuery访问它时,也得到了未定义的


我真的被这件事难住了,这让我很困扰,因为这几天我还没有得到预期的结果。任何帮助都将不胜感激。

据我所知,gon
不允许这样做。或者至少没有现成的机制通过ajax请求更新
gon
变量。它们有
gon.watch
,但它适用于其他用例


我想你不需要它。当您的服务器响应
.js.erb
模板时,您已经可以访问javascript中的数据。您可以作为
访问
@stats
变量。无需在那里使用
gon

尝试使用“insead”作为API地址,在其中插入术语:url=“{term}”tags=&client\u id=“另外,将byebug添加到GEM文件中,然后在登录搜索团队参数后立即添加“byebug”。如果不是空的,请将“byebug”标记放在下面一行,然后查看响应。我想你的api不会有任何回报编辑:没有看到您正在使用gon gem。尽管如此,还是要尝试一下。下面答案中的作者更了解gon。问候语!你是100%正确的,我可以使用
在js.erb文件中访问我所需的值,而无需使用gone gem。谢谢你一直盯着我看,我真的很感激!