Rails将当地人渲染成循环中的部分并访问它们

问题描述:

嗨我想制作一个游戏应用程序,用户可以参与游戏并创建团队。 这里是我的代码 在games_controller.rbRails将当地人渲染成循环中的部分并访问它们

def team_events 
    @doubles = Game.where(game_type: Game::DOUBLES) 
    @mixed_doubles = Game.where(game_type: Game::MIXED_DOUBLES) 
    @others = Game.where(game_type: Game::OTHERS) 
end 

代码在我team_events.html.erb:

<div class = "container-fluid"> 
    <div class = "row"> 
    <%= render partial: "shared/table", locals: {doubles_games: @doubles} %> 
    </div> 
</div> 

在下面的部分我显示链接“创建团队”每场比赛的旁边。当用户点击它时,会打开一个模式对话框,其中包含用于创建团队的表单。 enter image description here

代码在_table.html.erb局部

<table class = "table table-hover"> 

    <thead> 
    <tr> 
     <th> Game </th> 
     <th> Game Type </th> 
     <th> Actions </th> 
    </tr> 
    </thead> 

    <tbody> 
    <% doubles_games.each do |game| %> 
     <tr> 
     <td><%= game.name %></td> 
     <td><%= game.game_type %></td> 
     <td> 
      <a href="#" type="button" data-toggle="modal" data-target="#myModal"> 
      Create Team 
      </a> 
     </td> 
     </tr> 
    <% end %> 
    </tbody> 

</table> 

自举模式窗口

<div class="modal fade" id="myModal" role="dialog"> 
    <div class="modal-dialog"> 
    <div class= "modal-content"> 

     <div class="modal-body"> 
     <%= render partial: 'teams/form', locals: {game: game} %> 
     </div> 

    </div> 
    </div> 
</div> 

代码在_form.html.erb

<%= simple_form_for Team.new, url: teams_path(game_id: game.id), method: :post do |f| %> 
    <%= f.input :game_name, label: "Game", input_html: {value: "#{game.name}"}, disabled: true %> 
    <%= f.input :game_type, label: "Type", input_html: {value: "#{game.game_type}"}, disabled: true %> 
    <%= f.input :name, autofocus: true, required: false, hint: "Name your team" %> 
    <%= f.input :members, as: :text, required: true, hint: "Enter the names seperated by comma" %> 
    <%= f.submit "Create", class: "btn btn-success" %> 
<% end %> 

当用户点击游戏旁边的“创建团队”链接,模态窗口打开并显示窗体创建团队出现。同样在模式窗口中,用户创建团队的游戏也会出现(在_form.html.erb中禁用:true选项)。 所以当我点击创建乒乓球队。下面的窗口出现

enter image description here

这里的问题是任何游戏用户点击创建团队链接,它显示了同样的游戏。 所以,如果我点击羽毛球或卡罗姆的创建团队。在窗口它显示乒乓球仅 请让我知道如果你需要更多的细节

对于所有游戏,您都有id'myModal'和data-target =“#myModal”。所以它打开了第一个使用ID'myModal'的模式。 Id在文档中必须是唯一的。因此,请尝试为每种模式使用不同的ID来解决此问题。

你有很多形式(内循环),所以你可以从JavaScript触发模式并传递游戏类型或id以避免更多的html内容。

+0

HI @sssskkk它的工作。我已经使id改变为每场比赛。 –

在下一行,使用两个冒号,而不是一个:

<%= render partial: "shared/table", locals: {:doubles_games: @doubles} %> 

正确的代码应该是以下几点:

<%= render partial: "shared/table", locals: { doubles_games: @doubles } %> 
+0

谢谢@阿尔斯兰阿里。这是一个错字..我现在纠正它 –

+0

它解决了你遇到的错误吗? –

+0

不,它没有.. :( –