Наблюдать поле ничего не делает - PullRequest
0 голосов
/ 30 июля 2010

Я хочу, чтобы поле поиска начало выводить результаты, как только пользователь начнет печатать.

Это мое мнение:

    <%= observe_field 'keyword',
        :url => { :action=> 'search_results' },
        :frequency => 0.5,
        :update => 'results',
        :loading => "$('.spinner').show()",
        :complete => visual_effect(:slide_down, "results", :duration => 0.9),
        :with => 'keyword' %>


        <%= form_remote_tag :url =>{ :action => :search_results }, 
        :update => "results", 
        :loading => "$('.spinner').show()",  
        :complete => visual_effect(:slide_down, "results", :duration => 0.9) %>



                    <fieldset>
                        <legend>Tutor Search.</legend>
                        <label for="searchItField">Keyword Search.</label>

                        <%= text_field_tag(:keyword) %>
                        <span id="Submit_search">

                        <span id="Submit_search_hover"><%= submit_tag "Search", :name => nil %></span>

                        </span>
                    </fieldset>
        </form>

<div id="results">
    <img class="spinner" id="ajax_spinner" src="../images/ajax-loader.gif" alt="Comment being processed" style="display: none" />
</div>

В моем контроллере это:

 def search_results
       keyword = params[:keyword]
       @tutors = Tutors.find(:all,:conditions => ["category LIKE ?", '%' + keyword + '%'])    
  end

Теперь, если вы перейдете на http://avandata.net/tutor/tutors/search и наберете в поле поиска математику и нажмете "Отправить", она работает.НО поле наблюдения ничего не делает при наборе текста.Я пытался понять это навсегда.

Вот как выглядит мой журнал разработки.

Here is my log/development Processing TutorsController#search (for 98.254.132.228 at 2010-07-30 09:29:52) [GET] Rendering tutors/search Completed in 5ms (View: 3, DB: 0) | 200 OK [avandata.net/tutor/tutors/search]

А для кнопки поиска отправки в журнале это выглядит так:

Processing TutorsController#search_results (for 98.254.132.228 at 2010-07-30 13:28:22) [POST]
  Parameters: {"authenticity_token"=>"KNsIfr69fDTVGEZnwQoyXhnnuK5ZP6QIwq/zHRVYWqQ=", "keyword"=>"math"}
  [4;36;1mTutors Load (0.1ms)[0m   [0;1mSELECT * FROM `tutors` WHERE (category LIKE '%math%') [0m
Rendering tutors/search_results
  [4;35;1mTutors Columns (3.4ms)[0m   [0mSHOW FIELDS FROM `tutors`[0m
Completed in 8ms (View: 2, DB: 4) | 200 OK [http://avandata.net/tutor/tutors/search_results]

Ответы [ 2 ]

0 голосов
/ 31 июля 2010

Я понял, что проблема в том, что поле наблюдения должно идти после текстового поля. Вот и все. Увидеть ниже.

    <%= form_remote_tag :url =>{ :action => :search_results }, 
    :update => "results", 
    :loading => "$('.spinner').show()",  
    :complete => visual_effect(:slide_down, "results", :duration => 0.9) %>



                <fieldset>
                    <legend>Tutor Search.</legend>
                    <label for="searchItField">Keyword Search.</label>

                    <%= text_field_tag(:keyword) %>
                    <span id="Submit_search">

                    <span id="Submit_search_hover"><%= submit_tag "Search", :name => nil %></span>

                    </span>
                </fieldset>
    </form>

    <%= observe_field 'keyword',
        :url => { :action=> 'search_results' },
        :frequency => 0.5,
        :update => 'results',
        :loading => "$('.spinner').show()",
        :complete => visual_effect(:slide_down, "results", :duration => 0.9),
        :with => 'keyword' %>
0 голосов
/ 31 июля 2010

Если вы посмотрите на эту страницу в Firebug, вы увидите ошибку Javascript, как только вы наведете курсор на текстовое поле.Вот почему это не работает для вас.Что касается причины ошибки, неясно.

Я заметил, что библиотека JQuery, которую загружает страница, довольно старая (1.2.6).Я бы порекомендовал обновить ваши поддерживающие библиотеки JQuery, по крайней мере, до версий, содержащихся в репозитории JQuery здесь

Если это не решит вашу проблему, то я бы предложил пересмотреть ваше использование JRails в целом,Я всегда думал, что это был какой-то бессмысленный проект - клонирование интерфейсов RJS, но построенный на JQuery вместо Prototype.Мое мнение, несмотря на то, что оно, похоже, не пользуется большой популярностью в сообществе, поэтому есть опасения по поводу будущей поддержки.

Если вам нравится RJS, тогда просто используйте значения по умолчанию, которые есть в Rails.Они хорошо работают, если вам нравятся такие вещи.Если вам нравится JQuery, используйте его напрямую.Это отличная библиотека и очень интуитивно понятный в использовании.За то время, что вы потратили внимание на то, что это не работает, вы могли бы закодировать эквивалентную функциональную версию в JQuery несколько раз.

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