1
我有兩個模型,團隊和玩家。在球隊索引頁面我有一個沒有分配給球隊的球員名單。我試圖製作一個按鈕,以便我可以點擊其中一個沒有球隊的球員,並讓球員的「編輯表格」顯示在球隊索引頁面上。在另一個'索引視圖'中渲染一個模型'編輯表'
這是我目前的團隊#指數:
= link_to 'New Team', new_team_path
= link_to 'New Player', new_player_path
#teamLists
- @teams.each do |team|
.team
.teamtitle
.teamname
= link_to truncate(team.name, length: 18), edit_team_path(team)
.teammoney
= number_to_currency(team.adjust_money, precision: 0)
%table
%tr.tableheading
%th.namecolumn Player
%th.poscolumn Pos
%th.pricecolumn $
-team.players.each do |player|
%tr
%td.namecolumn= player.name
%td.poscolumn= player.position
%td.pricecolumn= player.price
-(1..(10-team.players.length)).each do |x|
%tr
%td ---
=render template: 'players/edit'
=render 'players/playerlist'
,這是我的球員#編輯
%h1 Nominated Player
= render 'players/form'
= link_to 'Show', @player
= link_to 'Back', players_path
和球員/形式
<%= form_for(@player) do |f| %>
<% if @player.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@player.errors.count, "error") %> prohibited this player from being saved:</h2>
<ul>
<% @player.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :position %><br />
<%= f.text_field :position %>
</div>
<div class="field">
<%= f.label :price %><br />
<%= f.number_field :price %>
</div>
<div class="field">
<%= f.label :team_id %><br />
<%= f.select :team_id, Team.all.map { |team| [team.name, team.id] }, { :include_blank => true } %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
目前,我得到這個錯誤'未定義的方法'model_name'爲NilClass:Class'我認爲它是因爲表單不能訪問@player,它是d在玩家編輯動作中定義。有沒有辦法讓這個工作以某種方式工作?
怎麼樣,如果我需要@player = player.find (params [:id]),但在索引頁上沒有參數? – AFraser
如果你無法知道它是哪個玩家,你必須在某處添加它。你有一個沒有團隊的球員列表,所以當你建立鏈接時,你可以在鏈接上添加類似隱藏字段或特殊ID的ID和球員ID。然後當你渲染partial時,從鏈接中獲取ID,並在我的響應中使用計劃B)傳遞'Player.find(the_id)'。 – MrDanA