2011-06-01 9 views
1

私は次のモデルがあります。この中Railsの3直列化された形式の属性

class Deck < ActiveRecord::Base 
    has_many :cards 
    serialize :stats 
    attr_accessible :name, :description, :stats 
end 

を、統計情報は、文字列の配列でなければなりません。私は行に任意の数の統計情報を追加できるようにしたいのです(追加の "統計"入力ボックスを追加するためにjavascriptを使用しますが、質問の範囲外です)。

私はこのビューの構造?私は手動でフォームを構築した場合、それは次のようになります。

<input type="text" name="deck[stats][]"> 

私のビューには、現在のようになります。

<%= f.fields_for :stats, @deck.stats do |p| %> 
    <%= p.label :p, "Stats: " %> 
    <%= p.text_field :p %> 
<% end %> 

しかし、この出力:

<input type="text" name="deck[stats][p]"> 

は私もそうカウンタをしたいです"Stat 1:"、 "Stat 2:"などのラベルを表示できます。

何か助けていただければ幸いです。あなたはそれはあなたがPと呼ばれる統計上の方法を探していると思う作っている:p定義することにより

答えて

1

私が行ったのソリューションを投稿将来の読者を支援する。提案のための

#Controller 
def new 
    @deck = Deck.new 
    @deck.stats = ["", ""] #include for number of times you wish to show the field. 
end 


#View 
<%@deck.stats.each_with_index do |s,i| %> 
    <p> 
    Stat <%=i+1%>: <%=text_field "stat", i, :name => "deck[stats][]", :value => s %> 
    </p> 
<%end%> 
0

、すなわちstats.p

<%= f.fields_for :stats, @deck.stats do |p| %> 
    <%= p.label :p, "Stats: " %> 
    <%= p.text_field :p %> 
<% end %> 

むしろちょうど<%= p.text_field %>があるかどうかはわからない:p

+0

おかげで、しかし、私は次のエラーを取得する:引数の**間違った数(1 0)** – Gazler

0

をドロップしてみてくださいきれいにそれを行う方法が、これは動作するはずです:

<% @deck.stats.each do |value| 
    <%= f.fields_for :stats do |fields| %> 
    <%= fields.text_field "", :value => value %> 
    <% end %> 
<% end %> 
0
= simple_form_for [:stats, @deck] do |f| 
    - 1.upto(4) do |i| 
    = f.input_field :stats, multiple: true, label: "Stat #{i}" 
    = f.submit 
+0

あなたは、これは、既存の答えよりも良いだろうどのようにいくつかの説明を追加することができます? – Joeytje50

関連する問題