代码之家  ›  专栏  ›  技术社区  ›  Chowlett

RubyonRails:如何从表单中收集子表的值?

  •  0
  • Chowlett  · 技术社区  · 15 年前

    参考问题2013421,我有以下ROR模型:

    class Game < ActiveRecord::Base
      has_many :piles
    end
    
    class Pile < ActiveRecord::Base
      belongs_to :game
    end
    

    为了争论,假设 Game 有一个属性 name ,和 Pile 有一个属性 type ,两者 string . 每场比赛正好有10堆。

    我想要一个HTML表单来创建一个新游戏,类似于 ruby script\generate scaffold 这就好像:

    <h1>New game</h1>
    
    <% form_for(@game) do |f| %>
      <%= f.error_messages %>
    
      <p>
        <%= f.label :name %><br />
        <%= f.text_field :name %>
      </p>
      <p>
        <%= f.submit 'Create' %>
      </p>
    <% end %>
    
    <%= link_to 'Back', games_path %>
    

    如何向窗体中添加字段以读取 Pile.type 每10根桩的场地?

    1 回复  |  直到 15 年前
        1
  •  3
  •   makevoid    15 年前

    你可以这样做:

    模型:

    class Game < ActiveRecord::Base
      has_many :piles
      accepts_nested_attributes_for :piles
    end
    

    以你的形式:

     <% f.fields_for :piles do |pile_form| %>
    
       <%= pile_form.label :your_attribute %>
       <%= pile_form.text_field :your_attribute %>
    
     <% end %>
    

    考虑ActiveRecord保留了“type”方法关键字列以实现多态关联

    见A good guide about nested forms in rails