Sortable_element с RJS не работает

У меня есть список изображений, где пользователь может размещать свои заказы.

Когда пользователь загрузил изображение, я хочу, чтобы список по-прежнему можно было сортировать.

Я использую аналогичную загрузку, описанную здесь: http://kpumuk.info/ruby-on-rails/in-place-file-upload-with-ruby-on-rails/

Пожалуйста помоги.

Вот код для загрузки в файл представления:

  <% form_for [:admin, @new_image], :html => { :target => 'upload_frame', :multipart => true } do |f| %>
    <%= hidden_field_tag :update, 'product_images'%>
    <%= f.hidden_field :image_owner_id %>
    <%= f.hidden_field :image_owner_type %>
    <%= f.file_field :image_file %><br />
    or get image from this URL: <%= f.text_field :image_file_url %>
    <%= f.hidden_field :image_file_temp %><br />
    <%= f.submit "Upload Image" %>
  <% end %>

И в представлении контроллера:

  def create
    @image = Image.new(params[:image])
    logger.debug "params are #{params.inspect}"
    if @image.save
      logger.debug "initiating javascript now"
      responds_to_parent do
        render :update do |page|
          logger.debug "javascript test #{sortable_element("product_images", :url => sort_admin_images_path, :handle => "handle", :constraint => false)}"
          page << "show_notification('Image Uploaded');"
          page.replace_html params[:update], :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image}
          page << sortable_element("product_images", :url => sort_admin_images_path, :handle => "handle", :constraint => false)
        end
      end
      #render :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image}
    else
      responds_to_parent do
        render :update do |page|
          page << "show_notification('Image Upload Error');"
        end
      end
    end
  end

Или, перефразируя вопрос:

Выполнение этого:

  page.replace_html params[:update], :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image}
  page << sortable_element("product_images", :url => sort_admin_images_path, :handle => "handle", :constraint => false)

НЕ будет добавлять функцию сортируемого списка.

Пожалуйста помоги,

Спасибо


person Community    schedule 10.04.2010    source источник


Ответы (2)


Я думаю, проблема может заключаться в том, что сортировка создается при первой загрузке страницы. Я пару раз сталкивался с этой проблемой. Добавление нового элемента в список означает, что вам нужно снова вызвать функцию сортировки, чтобы новый элемент был включен в сортировку.

Я не сталкиваюсь с прототипом/scriptaculous, но может быть способ заставить сортируемый элемент прослушивать события, которые добавляют элементы в список. jQuery имеет набор событий повторной привязки, которые будут реагировать на новые элементы, добавленные в DOM, что может быть чем-то похожим в других библиотеках.

person Community    schedule 11.04.2010
comment
Итак... что вы предлагаете? страница ‹‹ alert('проклятые ошибки рельсов') вызвала предупреждение, но каким-то образом страница ‹‹ sortable_element(product_images, :url =› sort_admin_images_path, :handle =› handle, :constraint =› false) ничего не вызвала. Как вы решили это? - person jaycode; 11.04.2010

Нашел!

Вместо:

  page.replace_html params[:update], :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image}

Использовать

  page.replace params[:update], :partial => '/admin/shared/editor/images', :locals => {:object => @image.image_owner, :updated_image => @image}
person Community    schedule 13.04.2010