2009-12-05 1 views
2

Как я могу указать Formtastic выбрать только отображение значений на основе условия?Отображать условные значения в элементе Formtastic

- semantic_form_for @member do |f| 
    - f.inputs do 
    = f.input :person 
    = f.input :role, :include_blank => false 
    = f.input :active 

Я только хочу: человек вводит список/выберите людей, которые активны i.e. person.active == true. Я попытался передать хэш-карту состояния безрезультатно.

ответ

2

Это двухэтапный процесс.

Сначала вам нужно выбрать только тех, кто активен. Затем вам нужно передать эту коллекцию активных людей в formtastic ввод через опцию: collection.

Шаг один, выбрав только активных людей: Это так же просто, как Person.find(:all, :conditions ["active = ?", true]). Но я думаю, что это лучше сделано с именованной областью в модели.

class Person < ActiveRecord::Base 
    # ... 
    named_scope :active, :conditions => {:active => true} 
end 

Теперь Person.active такое же, как Person.find(:all, :conditions ["active = ?", true])

Шаг два, обновляя форма:

- semantic_form_for @member do |f| 
    - f.inputs do 
    = f.input :person, :collection => Person.active 
    = f.input :role, :include_blank => false 
    = f.input :active 
0

Вы можете поставить любую пользовательскую коллекцию значений через: вариант сбора:

f.input :person, :collection => Person.find(:all, :conditions => "whatever")