Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在一个HTML表中显示来自两个相关数据库表的信息_Ruby On Rails_If Statement_Views - Fatal编程技术网

Ruby on rails 如何在一个HTML表中显示来自两个相关数据库表的信息

Ruby on rails 如何在一个HTML表中显示来自两个相关数据库表的信息,ruby-on-rails,if-statement,views,Ruby On Rails,If Statement,Views,我才刚刚开始使用RubyonRails,并开始习惯我正在开发的一款小型足球预测游戏的语言。游戏规则是,从每周选择的10场比赛中,用户必须选择他们认为的结果(主客场/平局),并为每个赛程分配1-10的值,每个数字只允许使用一次 我的模型的简要概述如下: 用户:用户名、电子邮件、加密密码、salt、创建时间、更新时间 团队:名称、创建时间、更新时间 固定装置:日期、主队、客队、周末、结果、获胜者、创建地点、更新地点 游戏周:数量、比赛、截止日期、创建时间、更新时间 选择:userid、gamewee

我才刚刚开始使用RubyonRails,并开始习惯我正在开发的一款小型足球预测游戏的语言。游戏规则是,从每周选择的10场比赛中,用户必须选择他们认为的结果(主客场/平局),并为每个赛程分配1-10的值,每个数字只允许使用一次

我的模型的简要概述如下: 用户:用户名、电子邮件、加密密码、salt、创建时间、更新时间 团队:名称、创建时间、更新时间 固定装置:日期、主队、客队、周末、结果、获胜者、创建地点、更新地点 游戏周:数量、比赛、截止日期、创建时间、更新时间 选择:userid、gameweekno、fixtureno、winner、value、created\u at、updated\u at

我设置了显示页面,以便显示所选周的装置,即第17周装置可通过/gameweeks/17访问,我现在希望显示用户对这些装置的选择,但遇到了一些困难。我的代码如下所示,用于显示页面:


Gameweek

匹配数:
截止日期:
截止时间:

日期 开球 家 远离 结果 预测 价值 @游戏周。数字)。每个do |夹具|%> Vs。 当前用户)。每个do |夹具|%> |


任何人都知道如何正确调用相应夹具的选择值以确保这是当前用户?

这不一定是最好的方法(视图中有很多逻辑,但您可能希望将上述代码部分更改为:

<% Fixture.where(:weekno => @gameweek.number).each do |fixture| %> 
  <tr>
    <td width="10"><%= fixture.date.strftime("%d/%m/%Y")%></td>
    <td width="10"><%= fixture.date.strftime("%H:%M") %></td>
    <td width="80"><%= fixture.home_team %></td> 
    <td width="10">Vs.</td>
    <td width="80"><%= fixture.away_team %></td>
    <td width="10"><%= fixture.result %></td>
    <% Selection.where(:userid => current_user.id, :fixtureno => fixture.id).each do |selection| %>
      <td width="10"><%= selection.winner %></td>
      <td width="10"><%= selection.value %></td>
    <% end %>
  </tr>
<% end %>
@gameweek.number)。每个都有| fixture |%>
Vs。
当前| user.id,:fixtureno=>fixture.id)。每个do | selection |%>
我必须纠正一些基本的语法问题。同样,rails越先进,您就越了解逻辑应该驻留在哪里,并且希望了解到这不是解决此问题的最有效方法


干杯

非常感谢安德鲁,我现在就试试看。仅供参考,您提到的基本语法问题是什么?另外,您建议哪种模型更适合这样做?您没有嵌套表单元素的结束标记(选择),您只是在筛选:userid=>current\u user(而不是current\u user.id)。你根本不是在过滤fixtureno。最后,您在上一次使用的是| fixture |而不是| selection |。每个do块,现在,对于逻辑,您应该将其推入范围并在控制器中进行设置,因此,您只需执行@selections.each do | selection | etcTried这些建议,我就得到以下错误:Gameweeks中的RuntimeError#show show C:/Sites/predictor/app/views/Gameweeks/show.html.erb,其中第34行出现了:为nil调用id,这将错误地为4——如果您真的想要nil的id,请使用object#idHi Andrew,太傻了,我很糟糕,我在用户未登录的情况下访问了一个页面,因此出现了此错误,因此感谢您的帮助,我做了一件好事:-)
<% Fixture.where(:weekno => @gameweek.number).each do |fixture| %> 
  <tr>
    <td width="10"><%= fixture.date.strftime("%d/%m/%Y")%></td>
    <td width="10"><%= fixture.date.strftime("%H:%M") %></td>
    <td width="80"><%= fixture.home_team %></td> 
    <td width="10">Vs.</td>
    <td width="80"><%= fixture.away_team %></td>
    <td width="10"><%= fixture.result %></td>
    <% Selection.where(:userid => current_user.id, :fixtureno => fixture.id).each do |selection| %>
      <td width="10"><%= selection.winner %></td>
      <td width="10"><%= selection.value %></td>
    <% end %>
  </tr>
<% end %>