Sortable_element с RJS не работает - PullRequest
0 голосов
/ 10 апреля 2010

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

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

Я использую похожую загрузку, которая была описана здесь: 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)

НЕ добавит функцию сортировки списка.

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 13 апреля 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}
0 голосов
/ 11 апреля 2010

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

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

...