рельсы Formtastic HABTM и выход - PullRequest
0 голосов
/ 30 июля 2010

РЕДАКТИРОВАТЬ: ищу это: http://diminishing.org/extending-formtastic-with-a-sprinkle-of-jquery (Если это сработает, я отвечу на свой вопрос)

Я начал создавать входящий и исходящий тип habtm (имеет много и принадлежитдля многих) сформировать через formtastic.Однако я бы хотел, чтобы оно было более гибким для пользователя, то есть если вы выберете имя на одной стороне, вы либо нажмете кнопку, которая сразу его перемещает (ajax по щелчку), либо после отправки формы

(Я использую formtastic с этим, но это ни к чему не обязывает в примерах)

То, с чем я борюсь, это кнопки javascript, in и out ..

Модель сравнения

class Comparison < ActiveRecord::Base
    has_and_belongs_to_many :devices
end

Модель устройства

class Device < ActiveRecord::Base
    has_and_belongs_to_many :comparisons
end

Контроллер сравнения

def edit
  @comparison = Comparison.find(params[:id])
  @devices = Device.find(:all, :select => 'id, device_name', :order => 'device_name')

  @devices_selected = @comparison.devices.find(:all, :order => 'device_name', :conditions => ["id IN (?)", @devices])

  @devices_not_selected = Device.find(:all, :order => 'device_name', :conditions => ["id NOT IN (?)", @devices_selected])
end

Сравнение Править Просмотр

<% semantic_form_for @comparison do |f| %>
 <% f.inputs do %>
    <%= f.input :comparison_name %>
    <%= f.input :description %>
    <h3>
        Select Devices
    </h3>
    <% f.inputs :class => 'inline_fields' do %>
        <%= f.input :devices,
                    :collection => @devices_not_selected,
                    :label_method => :device_name,
                    :label => 'Add Devices',
                    :input_html => { :size => 20 },
                    :include_blank => false,
                    :hint => 'Select devices from this list to compare to the parent device' %>
        <%= f.input :devices,
                    :collection => @devices_selected,
                    :label_method => :device_name,
                    :label => 'Remove Devices',
                    :input_html => { :size => 20 },
                    :include_blank => false,
                    :hint => 'Deselect devices from this list to take them off the comparison' %>
    <% end %>
 <% end %>
<%= f.buttons %>
<% end %>

1 Ответ

1 голос
/ 26 февраля 2011

Я буду использовать jquery для решения этой проблемы:

http://quasipartikel.at/2009/05/10/jqueryui-multiselect/

или

http://blog.jeremymartin.name/2008/02/easy-multi-select-transfer-with-jquery.html#

...