【发布时间】:2016-12-21 06:16:53
【问题描述】:
可能是措辞不佳的主题,我最近正在学习 Rails 并试图对一个旧项目进行一些改进。
我正在使用处理 Steam 驱动的 API 调用的 gem - https://github.com/Olgagr/steam-web-api
我正在渲染它
<% if current_user %>
<% player = SteamWebApi::Player.new(current_user.player_steam_id) %>
<% data = player.owned_games(include_appinfo: true) %>
<% game = data.games %>
<% game.each do |f| %>
<%= f['playtime_2weeks'] %>
<% if f['img_icon_url'].empty? %>
<img src='http://www.readyicons.com/IconSets/Sky_Light_(Basic)/32x32-no.png'>
<% else %>
<img src='http://media.steampowered.com/steamcommunity/public/images/apps/<%= f['appid'] %>/<%= f['img_icon_url'] %>.jpg'>
<% end %>
<%= f['name'] %><br>
<% end %>
<% end %>
我在 Active Directory 记录中添加并修改了它,以便它使用数据自动填充用户类别中的字段。
基本上我正在尝试在它旁边做同样的事情,但是通过搜索。 “current_user.player_steam_id”将替换为特定的查询返回。
马上开始,即使我可以让它工作(我正在使用 JS Swaps,它有效,但不是我认为它应该工作的方式)我实际上会有两个相同的代码块彼此相邻。
我相信此时我会使用 form_helper 并将其放置在表单中并渲染它...但是如何动态渲染它?我已经阅读了很多 Active:Directory:RoR 教程,并使用它来创建我的字段,但我不确定如何将它用于动态部分。
举个小例子。
之前:
| Section 1 | Section 2 | Section 3|
|CurrentUsersGames|Steam# To Search? | TBD |
|CurrentUsersGames| [Input Field] | TBD |
|CurrentUsersGames| | TBD |
|CurrentUsersGames| | TBD |
|CurrentUsersGames| | TBD |
|CurrentUsersGames| | TBD |
|CurrentUsersGames| | TBD |
搜索后:
| Section 1 | Section 2 | Section 3|
|CurrentUsersGames|SearchedUsersGames| TBD |
|CurrentUsersGames|SearchedUsersGames| TBD |
|CurrentUsersGames|SearchedUsersGames| TBD |
|CurrentUsersGames|SearchedUsersGames| TBD |
|CurrentUsersGames|SearchedUsersGames| TBD |
|CurrentUsersGames|SearchedUsersGames| TBD |
|CurrentUsersGames|SearchedUsersGames| TBD |
如果有任何建议,我们将不胜感激。谢谢。 (如果他们没有登录, 会阻止它中断)
编辑:添加了“之前”和“之后”的说明。本质上,我试图让中间 div 从搜索字段转到 API 响应的结果。
【问题讨论】:
-
I would use a form_helper and place this in a form, and render it... but how do I render it dynamically?你能告诉我们这个尝试会是什么样子吗?我发现很难弄清楚你真正想要什么......所以尝试这样做会帮助我理解你真正需要什么......尤其是“我如何动态渲染它”是什么意思? - 所有代码都是动态的,在这种情况下这个词是模棱两可的……哪一部分不是动态的?你能告诉我们如果它是静态的会是什么样子,然后告诉我们你希望它在动态时做什么? -
感谢@TarynEast 的洞察力-我之前添加了一个。事后看来,我猜我的图表令人困惑。我的图表是我“试图”获得的最终产品。我可以通过在搜索中的“SteamID”中进行硬编码来实现它,但是再次 - 然后我实际上有 2 个完全相同的代码块,为了一小部分差异将其渲染两次。
-
如果您所做的只是减少视图中的代码重复,那么这就是 partials 的用途。使部分接受任何动态变量,并将它们作为本地变量传递...然后调用部分两次(一次使用
current_user.player_steam_id,一次使用搜索结果)? -
感谢@TarynEast - 我会更多地研究 Partials。那一定是我需要的。我的搜索不断带回 form::helpers ,这看起来不太像我需要的。我会做类似This?
-
酷。是的,我很熟悉那些你只是不知道你需要问什么的时候:) 我会写一个简短的部分例子作为你的答案:)
标签: ruby-on-rails ruby api