访问引用形式参数的gon变量

时间:2017-06-18 07:31:19

标签: javascript ruby-on-rails ajax octokit gon

我正在尝试构建一个搜索github用户的简单页面,并在页面上显示他们的关注者而不刷新页面。我正在使用Octokit访问Github api和Gon来创建可以在js.erb文件中访问的控制器变量。我可以访问设置为字符串的gon变量,但不能访问引用查询参数的变量。我该怎么做?

class UsersController < ApplicationController
  def search
    github = Octokit::Client.new(:login => 'monzelb', :password => "#{Rails.application.secrets.github_key}")
    @query = params[:query]
    gon.query = @query
    @followers = github.followers("#{@query}")
    gon.followers = @followers
    @blah = "blah"
    gon.blah = @blah
    if @query
      respond_to do |format|
        format.js 
        format.html 
      end
    end
  end
end

用户/ search.js.erb

console.log(gon.followers.first.login) # => nil
console.log(gon.blah) # => "blah"
$('body').append('<li class="result media"><%= j @followers.first.login %></li><img src= "<%= j @followers.first.avatar_url %>" class="result img">');

在提交表单时,jquery成功地将第一个关注者的图像和名称附加到页面,但我需要将所有关注者附加到页面。我认为Gon是一个很好的方法,但它似乎无法访问查询。

2 个答案:

答案 0 :(得分:0)

我不会&#39;我知道Js,Gon或Octokit,所以我不确定这个答案对你有帮助。

但是你说你只看到附加的第一个跟随者。但这完全正常。这就是你的JS所做的:

$('body').append('<li class="result media"><%= j @followers.first.login %></li><img src= "<%= j @followers.first.avatar_url %>" class="result img">');

您可以尝试使用Ruby中的解决方案,例如:

<% @followers.each do |follower| %>
$('body').append('<li class="result media"><%= j follower.login %></li><img src= "<%= j follower.avatar_url %>" class="result img">');
<% end %>

不确定这是否有效。但无论如何,这可能是用JS而不是Ruby来完成的......

答案 1 :(得分:0)

我不确定你为什么要这样做:

@query = params[:query]
gon.query = @query
@followers = github.followers("#{@query}")
gon.followers = @followers
@blah = "blah"
gon.blah = @blah

相反,您应该保存@query@followers@blah个实例变量,然后将其推送到gon

这样的事情:

gon.push({
   query: @query,
   followers: @followers,
   blah: @blah
})