观察领域没有做任何事情

时间:2010-07-30 18:34:57

标签: ruby-on-rails ruby

我希望搜索字段在用户开始输入后开始输出结果。

这是我的观点:

    <%= 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 :(得分:0)

如果您在Firebug下查看该页面,只要将鼠标悬停在文本字段上,就会发现Javascript错误。所以这就是为什么它不适合你。至于造成错误的原因尚不清楚。

我注意到页面加载的JQuery库很老(1.2.6)。我建议至少将支持的JQuery库更新为JQuery存储库here

中包含的版本

如果这不能解决您的问题,那么我建议您重新考虑使用JRails。我一直认为这是一个毫无意义的项目 - 克隆RJS接口,但建立在JQuery而不是Prototype上。我的意见尽管它在社区中似乎并没有很大的吸引力,但是对未来的支持存在担忧。

如果您喜欢RJS,那么只需使用Rails附带的默认值即可。如果你喜欢那种东西,它们会很好用。如果你喜欢JQuery,那么直接使用它。这是一个很棒的图书馆,使用起来非常直观。在你看到这个不起作用的时候,你可以在JQuery中多次编写一个等效的功能版本。

答案 1 :(得分:0)

我发现问题在于观察区域必须在文本字段之后。这就是全部。见下文。

    <%= 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' %>
相关问题