Рельсы 3 и Аякс в частичном - PullRequest
0 голосов
/ 22 марта 2011

У меня есть: устройств.1010 *

У меня есть jquery внутри, я хочу сделать, когда я добавляю новое имя_определения, которое будет отображаться в частичном списке с ajax, который находится в devices.html.erb.Спасибо.

1 Ответ

0 голосов
/ 22 марта 2011

Я отрисовываю партиал, используя ajax со следующим кодом:

В вашем основном файле поместите это:

<div id="phone_numbers">
    <%= render @phone_number, :phone_types => PhoneNumbersHelper::phone_types %>
</div>
<%= link_to_function "Add Number", do |page|
    partial = escape_javascript( render PhoneNumber.new, :phone_types => PhoneNumbersHelper::phone_types )
    page << "$('#phone_numbers').append(\"#{partial}\")"        
end %>

Когда вы нажмете «Добавить номер», «_phone_number» будетсгенерированный и загруженный в div с идентификатором "phone_numbers"

У меня в партиале есть:

<div class="phone_number">
<%= fields_for 'location[numbers][]', phone_number do |f| %>
    <div class="field">
        <%= f.label "Phone Number" %><br/>
        +(<%= f.text_field :code, :class => 'phone_code' %>)-
        <%= f.text_field :number, :class => 'phone_number' %>
        <%= f.select :ptype, phone_types %>
    </div>
<% end%>
</div>

Причина, по которой у меня есть 'location [numbers] []', заключается в том, что яиспользование частичного _phone_number в представлении для модели Location.Модель «Мое местоположение» имеет следующее:

attr_accessor :numbers

Это позволяет местоположению [числам] установить средство доступа «номера».Причина, по которой у нас есть [] после местоположения [номера], заключается в том, чтобы разрешить передачу нескольких телефонных номеров в модель.

Кроме того, вам необходимо сохранить номера телефонов перед сохранением в модели местоположения

before_save :save_numbers

def save_numbers
   unless numbers.nil?
        numbers.each do |n|
            unless n[:number].nil? || n[:code].nil? || n[:number].blank? || n[:code].blank?
                phone_numbers.build(n)
            end
        end
    end
end

У моей модели также есть has_many: phone_numbers;это объясняет phone_numbers.build

Теперь для контроллера:

def new
    1.times { @location.phone_numbers.build }
    @phone_numbers = @location.phone_numbers
    @phone_number = @phone_numbers[0]
end

Обратите внимание, что в приведенном выше коде я использовал @phone_number, который я передаю частичному рендеру.Rails 3 поддерживает коллекции, что означает, что если вы хотите, чтобы по умолчанию было создано много телефонных номеров, вы можете передать @phone_numbers в метод частичного рендеринга, и rails автоматически сгенерирует несколько телефонных номеров!

Надеюсь, это поможет ... =)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...