Commit 1e5aa0effffa60cc5f5a953011cfb40a37b6a862
1 parent
6323cdda
Exists in
master
and in
4 other branches
add tags autocomplete
Showing
6 changed files
with
63 additions
and
0 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | +class TagsController < ApplicationController | |
| 2 | + def index | |
| 3 | + end | |
| 4 | + | |
| 5 | + def autocomplete | |
| 6 | + tags = Project.tag_counts.limit 8 | |
| 7 | + tags = tags.where('name like ?', "%#{params[:term]}%") unless params[:term].blank? | |
| 8 | + tags = tags.map {|t| t.name} | |
| 9 | + | |
| 10 | + respond_to do |format| | |
| 11 | + format.json { render json: tags} | |
| 12 | + end | |
| 13 | + end | |
| 14 | + | |
| 15 | +end | ... | ... |
app/views/projects/_form.html.haml
| ... | ... | @@ -57,9 +57,19 @@ |
| 57 | 57 | $(function(){ |
| 58 | 58 | var tag_field = $('#tag_field').tagify(); |
| 59 | 59 | |
| 60 | + | |
| 61 | + tag_field.tagify('inputField').autocomplete({ | |
| 62 | + source: '/tags/autocomplete.json', | |
| 63 | + position: { of: tag_field.tagify('containerDiv') }, | |
| 64 | + close: function(event, ui) { tag_field.tagify('add'); }, | |
| 65 | + }); | |
| 66 | + | |
| 67 | + | |
| 60 | 68 | $('form').submit( function() { |
| 61 | 69 | var tag_field = $('#tag_field') |
| 62 | 70 | tag_field.val( tag_field.tagify('serialize') ); |
| 63 | 71 | return true; |
| 64 | 72 | }); |
| 73 | + | |
| 74 | + | |
| 65 | 75 | }) | ... | ... |
config/routes.rb
| ... | ... | @@ -0,0 +1,31 @@ |
| 1 | +require 'spec_helper' | |
| 2 | + | |
| 3 | +describe "Tags" do | |
| 4 | + before { login_as :user } | |
| 5 | + | |
| 6 | + # describe "GET 'tags/index'" do | |
| 7 | + # it "should be successful" do | |
| 8 | + # get 'tags/index' | |
| 9 | + # response.should be_success | |
| 10 | + # end | |
| 11 | + # end | |
| 12 | + | |
| 13 | + | |
| 14 | + describe "GET '/tags/autocomplete'" do | |
| 15 | + before do | |
| 16 | + @project = Factory :project | |
| 17 | + @project.add_access(@user, :read) | |
| 18 | + @project.tag_list = 'demo1' | |
| 19 | + @project.save | |
| 20 | + visit '/tags/autocomplete.json' | |
| 21 | + end | |
| 22 | + | |
| 23 | + | |
| 24 | + it "should contains tags" do | |
| 25 | + page.should have_content('demo1') | |
| 26 | + end | |
| 27 | +end | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | +end | ... | ... |