我現在這個掙扎,因爲幾天,最後編輯的has_many決定問,即使我覺得它不應該是很難實現的。如何通過關聯
我使用軌道3.1和我希望能夠在一個單一的形式編輯的has_many的連接表的一些記錄:通過關聯
我看了Ryan Bates' railscasts但是這不正是我是什麼尋找,
然後我試圖執行this solution看起來非常接近我所需要的,但它不是編輯連接表。
這是情景: 我的球員(誰是用戶的sublass)誰有很多技能。每個玩家都有一個技能等級,作爲一個整數(1到10)存儲在player_skill模型中。
我能夠創建並顯示玩家的技能,我可以設置值,並將其存儲在數據庫中,但我不能從數據庫中檢索現有值,並將其作爲在下拉菜單中選擇值。這是我的模型:
class Player < User
has_many :player_skills, :dependent => :destroy
has_many :skills, :through => :player_skills
accepts_nested_attributes_for :skills
attr_accessible :player_skills
end
class Skill < ActiveRecord::Base
has_many :player_skills
has_many :players, :through => :player_skills
end
# This stores the skill level as integer 1..10
class PlayerSkill < ActiveRecord::Base
belongs_to :player
belongs_to :skill
end
我希望能夠通過每每項技能下拉菜單進行編輯在一個單一的形式指定玩家所有技能水平。現在我可以設置並將它們保存到數據庫中,但是當我重新加載編輯表單時,我無法檢索這些值。
這是我用它來創建編輯表單代碼。我明白我的錯誤是在select的用戶,我沒有加載現有的值,但我不知道如何去做。
<h3><%= @user.first_name %> <%= @user.last_name %></h3>
<% @skills = Skill.all %>
<%= form_for @user, :url => updateplayerskills_path(@user) do |f| %>
<div class="field">
<table border="1">
<tr>
<td>Skill Name</td>
<td>Level</td>
</tr>
<% @skills.each do |skill| %>
<%= f.fields_for :player_skills do |builder| %>
<tr>
<td><%=h skill.name %></td>
<td>
#Here how can I load and display the existing level's value??
#Shall I maybe use a different select method?
<%= f.select skill.id, 1..10 %>
</td>
</tr>
<% end %>
<% end %>
</table>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
任何幫助/提示非常感謝! 謝謝!
感謝薩里爾!我認爲我們在那裏。實際上,你的代碼顯示了從1到6的值(我有6個技能)的下拉菜單,但是我需要在那裏顯示player_skill.level的當前值和從1到10的值。我找到了**難看的**解決方案到目前爲止是<%= builder.select skill.id,options_for_select([['1',1],['2',2],['3',3],['4',4],[ '5',5],['6',6],['7',7],['8',8],['9',9],['10',10]],player_skill。級別)%>' – moncino07
@ moncino07,根據您需要的常數更新我的答案。希望能幫助到你。 – Salil