访问引用表单参数的 gon 变量
Posted
技术标签:
【中文标题】访问引用表单参数的 gon 变量【英文标题】:Accessing gon variable that references form params 【发布时间】:2017-11-20 14:46:38 【问题描述】:我正在尝试构建一个简单的页面来搜索 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 将是执行此操作的好方法,但它似乎无法访问查询。
【问题讨论】:
【参考方案1】:我不知道你为什么这样做:
@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
)
【讨论】:
【参考方案2】:我不知道 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 中完成......
【讨论】:
谢谢!正是我需要做的。 不,这很丑,因为你最终会得到大量的 JS 行。我的问题是:为什么你使用 Js 而不是将所有这些数据显示为纯 HTML?以上是关于访问引用表单参数的 gon 变量的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Jbuilder 中使用带有 Gon gem 的 Rails 助手?