Отбрасывание получения идентификатора в Rails - PullRequest
1 голос
/ 06 января 2011

В настоящее время у меня есть веб-страница rails, которая использует jRails и библиотеку jQuery для запуска некоторых функций ajax. Пока все работает, включая плагин delayedObserver, который предполагает, что jRails действительно используется. Однако мой drop_receiving_element, похоже, не работает. Это код Rails:

    <%= drop_receiving_element drop_id,
      :onDrop => "function(drag_element, drop_element, event){
    if (confirm(\"#{escape_javascript(_('This will remove User from this Group, are you sure?'))}\"))
    {#{remote_function(:update => 'module_content',
    :url => {:controller => :projects,
    :action => :member_delete,
    :id => @project.id},
    :with => "'u=' + encodeURIComponent(drag_element.id)"
    )};}
    }",
      :accept => 'RolesUsersSelection',
      :hoverclass => "#{drop_class}_active"
  %>

Что приводит к следующему коду Javascript

  <script type="text/javascript"> 
//<![CDATA[
jQuery('#RemoveThisMember').droppable({accept:'RolesUsersSelection', drop:function(drag_element, drop_element, event){
    if (confirm("This will remove User from this Group, are you sure?"))
    {jQuery.ajax({data:'u=' + encodeURIComponent(drag_element.id), success:function(request){jQuery('#module_content').html(request);}, type:'post', url:'/of/projects/11/member_delete'});}
    }, hoverClass:'ProjectRoleDropDelete_active'})
//]]>
</script>

И все же я озадачен тем, почему это не работает.

Эта функция вызывается в jRails.rb

.
 def drop_receiving_element_js(element_id, options = {})
    #convert similar options
    options[:hoverClass] = options.delete(:hoverclass) if options[:hoverclass]
    options[:drop] = options.delete(:onDrop) if options[:onDrop]

    if options[:drop] || options[:url]
      options[:with] ||= "'id=' + encodeURIComponent(#{JQUERY_VAR}(ui.draggable).attr('id'))"
      options[:drop] ||= "function(ev, ui){" + remote_function(options) + "}"
    end

    options.delete_if { |key, value| PrototypeHelper::AJAX_OPTIONS.include?(key) }

    options[:accept] = array_or_string_for_javascript(options[:accept]) if options[:accept]
    [:activeClass, :hoverClass, :tolerance].each do |option|
      options[option] = "'#{options[option]}'" if options[option]
    end

    %(#{JQUERY_VAR}('#{jquery_id(element_id)}').droppable(#{options_for_javascript(options)});)
  end

Есть идеи?

Спасибо

1 Ответ

0 голосов
/ 10 января 2011

Оказывается, потому что я переключился на jQuery, параметры для

function(drag_element, drop_element, event)

были неверными.Это правильные параметры для прототипа.Они должны читать

function (ui,event)

, если вы используете библиотеку jQuery.

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