элемент равен нулю в рельсах? - PullRequest
0 голосов
/ 06 октября 2011

У меня есть модальное диалоговое окно, которое содержит поле поиска. когда я выбираю элемент из выпадающего списка, я получаю сообщение об ошибке «элемент равен нулю». Не могу понять, почему я получил эту ошибку. Ниже приведен мой код.

<%= label_tag :Search_by %>
<select name="search" id="search" >
    <option value="0">Trainer</option>
    <option value="1">Venue</option>
    <option value="2">Country</option>
</select>

<div id="div_to_be_updated" style="float:right">
</div>

<%= observe_field 'search', :update => 'div_to_be_updated',:url => {:controller => 'events', :action=> 'pop_up_search' }, :with => "'is_delivery_address=' + escape(value)" %>

код контроллера ::

def pop_up_search
  @trainers= Trainer.all
  @countries= Country.all

  if ["0"].include?(params[:is_delivery_address])
    render :partial => 'layouts/pop_up_trainer_search'
  else
    if ["1"].include?(params[:is_delivery_address])
      render :partial => 'calendar/pop_up_venu_search'
    else
      render :partial => 'layouts/pop_up_country_search'
    end
  end
end     

_pop_up_trainer_search.html.erb

<span style="text-align: right">
    <% form_tag "/calendar/pop_up_trainer_view" do %>
        <%= collection_select("event", "trainer_id", @trainers , :id, :name, {:prompt => true}) %>
        <%= submit_tag "search" %>
    <% end%>
</span>

Почему я получил эту ошибку? Кто-нибудь может мне помочь исправить это?

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Похоже, ваша ошибка происходит на клиенте, а не на сервере.

Это означает, что есть проблема с вашим JS.

Это означает, что observe_field не поворачиваетсяв хороший JS.

Предложения

Проверьте источник вашей веб-страницы, так как она отправляется с сервера.

  • Посмотрите на Javascript, который наблюдает за элементом #search.
  • Убедитесь, что нет других элементов с идентификатором поиска
  • Используйте Firebug или другой JS-отладчикчтобы следовать потоку Javascript, когда в поле выбора выбрано новое значение

Добавлено Так как оно работает, когда в основном эрбе, но не во всплывающем эрбе, пара идей:

  1. Не используйте повторно идентификатор search во всплывающих окнах.Это должен быть уникальный элемент DOM.Различные способы справиться с этим, один - скрыть, а не уничтожить всплывающее окно.
  2. Подтвердите, что JS вызывается при создании всплывающего диалога.- Добавьте оператор оповещения и посмотрите, оценивается ли он.
  3. Работает ли он при первом создании диалогового окна, но не позднее?
  4. Отладчик JS - ваш друг.Используйте его, чтобы внимательно посмотреть, что происходит в браузере.Предполагается, что механизм Rails JS работает на JS частично, но, возможно, там есть проблема.
0 голосов
/ 06 октября 2011

Предложения:

  • проверьте свой JS в консоли Firebug

  • как выглядит тэг формы? у вас есть: URL-адрес установлен правильно?

  • Ваш: с правильным параметром?

  • можете ли вы использовать символы вместо строк при ссылке на DIV? например : search,: div_to_be_updated

    <% = поле наблюдения: поиск:: обновление =>: div_to_be_updated,: url => {: controller => 'events', : action => 'pop_up_search'},: with => "'is_delivery_address =' ​​+ escape (значение)"%>

  • как выглядят ваши параметры, когда вы получаете вызов вашего pop_up_search ()

  • существует ли DIV div_to_be_updated, когда вы смотрите в Firebug?

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