我使用多个外部JSON文件并在我的网站上显示结果。
我想对所有不同的文件使用相同的视图....所以我需要能够在此视图模板中插入数据库中的参数。
所以这里有几个场景 -
<% @results[leaderboard][players].first(25).each do |player| %>
<%= player[player_bio][first_name] + ' ' + player[player_bio][last_name] %>
<%= player[total] %>
<% end %>
<% @results[leaderboard][players].first(25).each do |player| %>
<%= player[player_bio][name] %>
<%= player[total] %>
<% end %>
<% @results[results][leaderboard][players].first(25).each do |player| %>
<%= player[name] %>
<%= player[round][game][total] %>
<% end %>
所以每个例子的第一行 -
result = [leaderboard][players]
result = [results][leaderboard][players]
我想从数据库中提取结果,该结果将适用于两种情况。
与其他人相同 -
name = player[player_bio][name]
name = player[player_bio][first_name] + ' ' + player[player_bio][last_name]
name = player[name]
total = player[total]
total = player[total]
total = player[round][game][total]
因此,每个事件我都可以为该外部JSON文件保存正确的参数。
还有几个笔记......
问题 -
选项 -
也许?? -
因此...
@event = Event.find(params[:id])
event_feed = EventFeed.where(event_id: @event).last #External JSON is saved
@results = event_feed.feed #JSON file is saved here
@filter = JsonFilter.where(event_id: @event).last
UPDATE ***
查看 -
<div class="table-responsive">
<table class="table table-striped">
<% player_loop.first(25).each do |player| %>
<tr>
<td>
<%= player_name player: @player_name = player %>
</td>
<td>
<%= player_option player: @player_option = player %>
</td>
<td class="text-center">
<%= player_score player: @player_score = player %>
</td>
</tr>
<% end %>
</table>
</div>
帮助者 -
def player_loop
if @filter.loop_level == 1
@results[@filter.loop_one]
else @filter.loop_level == 2
@results[@filter.loop_one][@filter.loop_two]
end
end
def player_name(player_name)
if @filter.name_level == 1
@player_name[@filter.name_one]
else @filter.name_level == 2
@player_name[@filter.name_one][@filter.name_two] + ' ' + @player_name[@filter.name_one][@filter.name_three]
end
end
def player_option(player_option)
if @filter.option_level == 1
@player_option[@filter.name_one]
elsif @filter.option_level == 2
@player_option[@filter.option_one][@filter.option_two]
else @filter.option_level == 3
@player_option[@filter.option_one][@filter.option_two][@filter.option_three]
end
end
def player_score(player_score)
if @filter.score_level == 1
@player_score[@filter.score_one]
elsif @filter.score_level == 2
@player_score[@filter.score_one][@filter.score_two]
else @filter.score_level == 3
@player_score[@filter.score_one][@filter.score_two][@filter.score_three]
end
end
因此...
最新的更新非常有效:)...不确定这是不是最好的方式做到这一点,并希望证明我这样做太复杂了。
谢谢!
答案 0 :(得分:0)
如果我正确理解你的问题,你只想在一些名为JsonKey
的表的列中保存一些JSON对象,对吗?
如果是,请查看ActiveRecord's serialize
能力。有了这个,您可以将哈希/ JSON数据直接插入一行并检索它以便在您的视图,控制器等中使用。
添加后:
serialize :your_json_column, JSON
您只需调用JsonKey.first.your_json_column
,然后使用存储在控制器或视图中的JSON。