<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-167  評論-65  文章-0  trackbacks-0

    rails2.0之前類庫里已經封裝了自動完成功能,rails2.0以后被分離了出來,作為插件使用.

    插件作用:能夠實現自動完成 和 自動提示 功能

    我的環境:ruby1.8.6 + rails 2.1.0

    效果預覽:

    image

    image

    使用案例一:(簡單的使用)

    1,下載插件

     

    (1),直接到網站上下載 http://github.com/rails/auto_complete/tree/master

    (2),在項目中下載,進入項目目錄 輸入 ruby script/plugin auto_complete 自動安裝插件到項目下,默認是從http://dev.rubyonrails.com/svn/rails/plugins 站點下載的,所以完整的下載路徑是

    ruby script/plugin install http://dev.rubyonrails.com/svn/rails/plugins/auto_complete/

    這里可以利用 ruby script/plugin list 查看有哪些插件可以下載

    image

    2,直接按照插件的 readme 操作(請查看插件的readme)

    # Controller
    class BlogController < ApplicationController
    auto_complete_for :post, :title #post對應著model(即表),title對應著表的一個字段
    end

    # View
    <%= text_field_with_auto_complete :post, title %>

    3,在layouts下 新建一個blog.rhtml,把下面代碼包括進來

    <%= javascript_include_tag :defaults %>

    4,如果到這里你還是沒有成功的話,建議在controller中添加

    skip_before_filter :verify_authenticity_token, :only => [:auto_complete_for_post_title] #我做的時候就是加了這個skip filter的,不然運行不穩定

    5,ok....success!

    案列二:(加一些約束條件)

    其它步驟基本不變,可以在model中指定顯示的條數和字段 什么的

    eg:

    Model中:

    class Fruit < ActiveRecord::Base
    # 定義一個查詢方法,
    def self.find_fruit_by_part(part)
    # 查詢出所有name匹配part的水果實體,最多顯示5條
    Fruit.find(:all,    :conditions => ["name LIKE ?", "%" + part + "%" ],:limit => 5);
    end
    end

    Controller中:

    class FruitController < ApplicationController

    skip_before_filter :verify_authenticity_token, :only => [:auto_complete_for_user_fruit] 
    def index
    end

    def auto_complete_for_user_fruit    
    begin
    fruit = params[:user][:fruit]
    rescue
    # 如果不能正常取得請求參數,給一個默認參數
    fruit = "an"
    end     
    @results = Fruit.find_fruit_by_part(fruit);    
    render :inline => "<%= auto_complete_result @results, 'name' %>"
    end

    end

    view中:

    <h3>測試自動完成功能</h3>
    <p>
    <%= text_field_with_auto_complete :fruit, :name %>
    </p>

    案列三:添加css樣式

    css:

    .useraddress{
    font-size:12px;
    color:#628B24
    }

    controller:
    class MessageController < ApplicationController

    skip_before_filter :verify_authenticity_token, :only => [:auto_complete_for_message_to]

    def auto_complete_for_message_to()
    user_name = params[:message][:to]
    @customers = Customer.find(:all , :conditions=>"name like '%"+user_name.downcase+"%'")
    render :partial => 'username'
    end

    end

    view:

    new.rhtml

    auto_complete 自動提示:<br/><br>
    <%= text_field_with_auto_complete 'message', 'to',{}, :skip_style => false %>

    _username.rhtml

    <ul class="allusers">
    <% for customer in @customers do %>
    <li class="thisuser">
    <div class="username">
    <%=h customer.name %>
    </div>
    <div class="useradd">
    <span class="useraddress">
    <%=h customer.address %>
    </span>
    </div>
    </li>
    <% end %>
    </ul>

    案列源碼下載:

    http://www.namipan.com/d/080744d037c133836019281306a7d90e1e546d8a3d970100

    ref:

    http://share-facts.blogspot.com/2009/02/autocompleter-example-in-ruby-on-rails.html
    http://jbf034.javaeye.com/blog/215429

    續:

    如果想修改默認的auto_complete的css樣式,到auto_complete_macros_helper.rb文件下找到auto_complete_stylesheet方法修改即可,我修改后的css

    image



    write by feng
    posted on 2009-03-31 16:21 fl1429 閱讀(1125) 評論(0)  編輯  收藏 所屬分類: Rails
    已訪問數:
    free counters
    主站蜘蛛池模板: 亚洲女初尝黑人巨高清| 亚洲成AV人在线观看网址| 亚洲精品免费网站| 成人免费网站视频www| 亚洲国产成人久久精品app| 亚洲精品无码久久久| 亚洲一级毛片免观看| 久艹视频在线免费观看| 日韩久久无码免费毛片软件| 亚洲黄色在线电影| 无码欧精品亚洲日韩一区| 亚洲成人影院在线观看| 免费毛片网站在线观看| 国产高清免费视频| 亚洲成人免费网站| 亚洲一区中文字幕久久| 久久亚洲AV午夜福利精品一区| 中文字幕看片在线a免费| 99在线观看免费视频| 亚洲国产日韩在线观频| 免费无码又爽又刺激一高潮| 一级毛片人与动免费观看| 亚洲国产日韩一区高清在线| 91在线手机精品免费观看| 成人A毛片免费观看网站| 亚洲午夜理论片在线观看| 无套内射无矿码免费看黄| 亚洲人成未满十八禁网站| 四虎亚洲精品高清在线观看| 亚洲精品色播一区二区| 在线观看亚洲电影| 亚洲精品色午夜无码专区日韩| 成人久久免费网站| 5555在线播放免费播放| 亚洲AV永久无码天堂影院| 国产青草亚洲香蕉精品久久| 成人性做爰aaa片免费看| 中文字幕无码精品亚洲资源网久久| 亚洲爽爽一区二区三区| 亚洲国产电影在线观看| 激情婷婷成人亚洲综合|