2016-08-16 41 views
0

我有一个部分,拉的游戏有人在他们的蒸汽库列表推着语言环境变量,以局部用Rails 4.2

<h1><%= header %></h1> 
<% player = SteamWebApi::Player.new(steamId) 
owned_games = player.owned_games(include_appinfo: true)%> 
<% owned_games.each do |game| %> 
<%= game['playtime_2weeks'] %> 
<% if game['img_icon_url'].blank? %> 
<%= image_tag 'http://www.readyicons.com/IconSets/Sky_Light_(Basic)/32x32-no.png' %> 
<% else %> 
<%= image_tag "http://media.steampowered.com/steamcommunity/public/images/apps/#{game['appid']}/#{game['img_icon_url']}.jpg" %> 
<% end %> 
<%= game['name'] %><br> 
<% end %> 

而且它的基本视图饲料关current_user.player_steam_id的 - 在SQL场。 原本这是很好,只显示你现在的游戏,但我想用它做几件事。

A)当你检查某人的个人资料时,你会看到他们的列表。 B)您可以使用用户ID进行搜索,以获取查询结果。

我最初的问题是使用(XXXXXX实际上是一个数字,所以我不字符串化它(操作?)

<%= render :partial => 'game_list', :locals => {:header => "Welcome to His Page!", :steamId => XXXXXXXXXX } %> 

而且“欢迎他的网页!”被获得通过,但我“M有很多的问题越来越:steamId呈现

在我试着<%= steamId %><% steamId %>:steamId

当前和:steamId使其局部视图是仅有的两个不破页,但它没有渲染任何东西。我对此很新,所以试图弄清楚,但是我发现很多帖子都说我做得对。

我欢迎任何输入。

另外 - 因为我打算广泛使用这个,我应该考虑使它成为一个控制器?或者部分是否足够? (PS我通常是一个节点的家伙,所以我试着debug + console.log(steamId)了解它是如何渲染的,但是我没有在console.log中得到结果,并且调试没有做任何事情。通常你如何调试像这样的回报率

感谢任何输入

编辑:?!

附加信息:

这样做的问题是部分地在部分

<h1><%= header %></h1> 
<% player = SteamWebApi::Player.new(steamId) 
owned_games = player.owned_games(include_appinfo: true)%> 
<% owned_games.each do |game| %> 
<%= game['playtime_2weeks'] %> 
<% if game['img_icon_url'].blank? %> 
<%= image_tag 'http://www.readyicons.com/IconSets/Sky_Light_(Basic)/32x32-no.png' %> 
<% else %> 
<%= image_tag "http://media.steampowered.com/steamcommunity/public/images/apps/#{game['appid']}/#{game['img_icon_url']}.jpg" %> 
<% end %> 
<%= game['name'] %><br> 
<% end %> 

通过将其修改为owned_games定义,玩家定义在不同的行上,它解析成功。这仅仅是我未复审的东西,我复制/粘贴的失败。

解析的代码:

<h1><%= header %></h1> 
<% puts steamId %> 
<% player = SteamWebApi::Player.new(steamId) %> 
    <% owned_games = player.owned_games(include_appinfo: true)%> 
    This is my steam ID <%= steamId %> 
<% owned_games.each do |game| %> 
    <%= game['playtime_2weeks'] %> 
    <% if game['img_icon_url'].blank? %> 
    <%= image_tag 'http://www.readyicons.com/IconSets/Sky_Light_(Basic)/32x32-no.png' %> 
    <% else %> 
    <%= image_tag "http://media.steampowered.com/steamcommunity/public/images/apps/#{game['appid']}/#{game['img_icon_url']}.jpg" %> 
    <% end %> 
    <%= game['name'] %><br> 
<% end %> 

但是,我只能把它渲染,如果它拉从数据库中player_steam_id。

因此,举例来说,如果我有 :steamId => 76561198017108025

它不会工作,但如果我有

:steamId => User.player_steam_id它的工作。

(同样,“用户”在SQL列存储的player_steam_id)

我希望能够把这种在一个搜索按钮,这就是为什么我想要的“提交”了解如何让渲染使用特定的编号。

为什么会这样?我已经试过用视图来记录steamId,并且我看到它以正常整数的形式传递。我唯一合乎逻辑的假设是视图加载,用'steamId'调用API然后呈现steamId,但我只是猜测?

更新试用正错误

所以我尝试了使用像

<h1><%= header %></h1> 
<% appCall = steamId %> 
<% player = SteamWebApi::Player.new(appCall) %> 
<% owned_games = player.owned_games(include_appinfo: true)%> 
<%= appCall %> 
<%= owned_games.success %> 
<% owned_games.each do |game| %> 
    <%= game['playtime_2weeks'] %> 
    <% if game['img_icon_url'].blank? %> 
    <%= image_tag 'http://www.readyicons.com/IconSets/Sky_Light_(Basic)/32x32-no.png' %> 
    <% else %> 
    <%= image_tag "http://media.steampowered.com/steamcommunity/public/images/apps/#{game['appid']}/#{game['img_icon_url']}.jpg" %> 
    <% end %> 
    <%= game['name'] %><br> 
<% end %> 

我能够获得与看跌期权的输出,并且还使用了“player.success是'API的功能。其中返回“True”,并将steamId和app都渲染出ID。

我还测试前“的”打印出整个阵列,并且也注意到它给了我所有的数据。 true #<OpenStruct count=31, games=[{"appid"=>300, "name"=>"Day of Defeat: Source", "playtime_forever"=>48,

所以问题在于部分的'for'部分,我在想。我是否需要在主文档中运行for,并从部分数据中提供数据?这似乎是...的

+0

这个问题起源于从[这个线程(HTTP后续://计算器。com/questions/38948354/api-search-on-rails-search-input) – DNorthrup

+0

'XXXXXX实际上是一个数字,所以我不把它串起来(我?)' - 应该很好地传递一个数字。 –

+0

'<%= steamId%>'这应该是正确的 - 只要'steamId'不为空即可。尽管Rails的标准命名实践是使用'snake_case'而不是'CamelCase'(即你通常称之为'steam_id'):)注意:要仔细检查你有什么,你可以使用'inspect' - 它会输出如果变量中没有任何内容,则为'nil'例如:'

<%= steam_id.inspect%>

'(当我仔细检查值时,我经常使用h1标签,因此它不会在页面中丢失) –

回答

0

是GAME_LIST部分或者是一个普通的看法?部分将以下划线开头作为文件名。 _game_list.html.erb

试试这个

<%= render 'game_list', :header => "Welcome to His Page!", :steamId => XXXXXXXXXX %> 

然后你就可以使局部的内这样<%= steamId %>蒸汽ID。

编辑:

如果你不直接输出区域参照steamId你不需要包装在<%=%> 尝试SteamWebApi::Player.‌​new(steamId)代替SteamWebApi :: Player.新(<% = steamId%>)

另一个编辑

尝试此

<h1><%= header %></h1> 
<% player = SteamWebApi::Player.new(steamId) 
    owned_games = player.owned_games(include_appinfo: true)%> 
This is my steam ID <%= steamId %> 
<% owned_games.each do |game| %> 
<%= game['playtime_2weeks'] %> 
<% if game['img_icon_url'].blank? %> 
<%= image_tag 'http://www.readyicons.com/IconSets/Sky_Light_(Basic)/32x32-no.png' %> 
<% else %> 
<%= image_tag "http://media.steampowered.com/steamcommunity/public/images/apps/#{game['appid']}/#{game['img_icon_url']}.jpg" %> 
<% end %> 
<%= game['name'] %><br> 
<% end %> 

我加

This is my steam ID <%= steamId %> 
+0

'_game_list.html.erb' - 这是一个部分。 – DNorthrup

+0

'syntax error,unexpected'<',expected')'... yer = SteamWebApi :: Player.new(<%= steamId}; @ output_buffer.s ... ...'' 是我得到的回复 我的电话有点差异,因为它是 '<%= render:partial =>'game_list',:locals => {:header =>“Welcome to His Page!”,::steamId => “XXXXXXXXXXXXX”}%>' – DNorthrup

+0

请参阅我在编辑中的回答 – kcdragon

0

该问题最终成为Partial I用作模板。它从未将“游戏”数组修改为“游戏”,因此,当它通过游戏“每个”迭代时,它从未返回任何结果。

我最后的部分按预期工作。

<h1><%= header %></h1> 
<% player = SteamWebApi::Player.new(steamId) %> 
<% owned_games = player.owned_games(include_appinfo: true)%> 
<% game = owned_games.games %> 
<% games.each do |game| %> 
    <%= game['playtime_2weeks'] %> 
    <% if game['img_icon_url'].blank? %> 
    <%= image_tag 'http://www.readyicons.com/IconSets/Sky_Light_(Basic)/32x32-no.png' %> 
    <% else %> 
    <%= image_tag "http://media.steampowered.com/steamcommunity/public/images/apps/#{game['appid']}/#{game['img_icon_url']}.jpg" %> 
    <% end %> 
    <%= game['name'] %><br> 
<% end %> 

一旦我添加了附加修饰符,它就能够成功地呈现列表。