Formtastic在飞行中制作正确的字段?

时间:2011-10-15 21:46:48

标签: ruby-on-rails ruby ruby-on-rails-3 forms formtastic

我正在使用Formtastic并且还使用accepts_nested_attributes_for ..这是模型

class Tournament < ActiveRecord::Base
  has_many  :courts, :dependent => :destroy
  accepts_nested_attributes_for :courts, :allow_destroy => true

class Court < ActiveRecord::Base
  belongs_to :tournament

我需要有一个表单,比赛表格中的一个问题将决定我需要建立多少个法院。这是我的方法

def new
  @tournament = Tournament.new
  25.times do
    @tournament.courts.build
  end

并在视图中

<%= semantic_form_for @tournament do |f| %>
  <%= f.inputs do %>
    <%= f.input :number_courts, :hint => "How many courts are available?" %>
        <%= f.semantic_fields_for :courts do |ct| %>
          <%= ct.input :name %>
        <% end %>

这种方法的问题在于,当我真正只需要从“有多少个法院可用?”这个问题中输入的金额时,我总是会向用户提示25个字段。

有没有办法做到这一点,或者只是添加一个链接...任何想法

1 个答案:

答案 0 :(得分:1)

肯定有不止一种方法可以做到这一点。这是一个。

在新操作中预先构建了25个法院并将其包含在新页面中但不显示它们(显示:无)。在客户端,当用户输入/选择法院数量时,您将显示这些法院输入字段的数量。你需要非常简单的javascript。在rais控制器端,您可以忽略超出用户选择的法院数量的所有法院字段

在你的参数中,球场将以阵列形式出现。使用切片!摆脱额外的法庭。

params[:tournament][:courts].slice!(0..params[:tournament][:number_courts].to_i)