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>
在下面的部分我显示链接“创建团队”每场比赛的旁边。当用户点击它时,会打开一个模式对话框,其中包含用于创建团队的表单。
代码在_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选项)。 所以当我点击创建乒乓球队。下面的窗口出现
这里的问题是任何游戏用户点击创建团队链接,它显示了同样的游戏。 所以,如果我点击羽毛球或卡罗姆的创建团队。在窗口它显示乒乓球仅 请让我知道如果你需要更多的细节
对于所有游戏,您都有id'myModal'和data-target =“#myModal”。所以它打开了第一个使用ID'myModal'的模式。 Id在文档中必须是唯一的。因此,请尝试为每种模式使用不同的ID来解决此问题。
你有很多形式(内循环),所以你可以从JavaScript触发模式并传递游戏类型或id以避免更多的html内容。
在下一行,使用两个冒号,而不是一个:
<%= render partial: "shared/table", locals: {:doubles_games: @doubles} %>
正确的代码应该是以下几点:
<%= render partial: "shared/table", locals: { doubles_games: @doubles } %>
谢谢@阿尔斯兰阿里。这是一个错字..我现在纠正它 –
它解决了你遇到的错误吗? –
不,它没有.. :( –
HI @sssskkk它的工作。我已经使id改变为每场比赛。 –