jQueryUI autocomplete (Rails 3.1): can't get source as url to work

49 views
Skip to first unread message

Lille

unread,
Sep 20, 2012, 7:12:57 PM9/20/12
to rubyonra...@googlegroups.com
Hey,

I'm able to duplicate everything in Ryan Bates' screencast on jQueryUI autocomplete (#102), except for the piece that calls the server for completion data.

Here is my view html:

<input data-autocomplete-source="/searches" id="search-markets" name="search-markets" placeholder="market keyword and/or location" size="50" type="text" autocomplete="off">

Now, this coffeescript works...

$('#search-markets').autocomplete
source: ['foo', 'food', 'four']

...whereas, this coffeescript trying to tap the server...

$('#search-markets').autocomplete ->
source: $('#search-markets').data('autocomplete-source')

...results in http POST calls to the root and not the data-autocomplete-source value of '/searches'.

Bates's railscast uses a textfield in the context of a RESTful form, but I don't expect this difference between his code and mine should explain my unexpected POST.

Any thoughts?

Lille


Jim Ruther Nill

unread,
Sep 20, 2012, 8:10:35 PM9/20/12
to rubyonra...@googlegroups.com
On Fri, Sep 21, 2012 at 9:12 AM, Lille <lille.p...@gmail.com> wrote:
Hey,

I'm able to duplicate everything in Ryan Bates' screencast on jQueryUI autocomplete (#102), except for the piece that calls the server for completion data.

Here is my view html:

<input data-autocomplete-source="/searches" id="search-markets" name="search-markets" placeholder="market keyword and/or location" size="50" type="text" autocomplete="off"> 

Now, this coffeescript works...

$('#search-markets').autocomplete
source: ['foo', 'food', 'four']

...whereas, this coffeescript trying to tap the server...

$('#search-markets').autocomplete ->
source: $('#search-markets').data('autocomplete-source')

...results in http POST calls to the root and not the data-autocomplete-source value of '/searches'.

There seems to be nothing wrong in your code.  All I can think of that causes this is if another dom element
has an id of search-markets.  Can you confirm that your view only has one dom with this id?
 

Bates's railscast uses a textfield in the context of a RESTful form, but I don't expect this difference between his code and mine should explain my unexpected POST.

Any thoughts?

Lille


--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/jZaSqsd38YQJ.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
-------------------------------------------------------------
visit my blog at http://jimlabs.heroku.com

Lille

unread,
Sep 20, 2012, 8:25:48 PM9/20/12
to rubyonra...@googlegroups.com

There seems to be nothing wrong in your code.  All I can think of that causes this is if another dom element
has an id of search-markets.  Can you confirm that your view only has one dom with this id?

Yes, I confirm. I modified the code to ensure no interference...

$('#search-markets').autocomplete ->
source: "/searches" 

For what it's worth, the coffeescript compiles to this...

    $('#search-markets').autocomplete(function() { return { source: "/searches" }; });

I see other approaches using more of the autocompletion settings, including callbacks, but I wonder why my simple attempt fails.

Lille

Jim Ruther Nill

unread,
Sep 20, 2012, 8:43:08 PM9/20/12
to rubyonra...@googlegroups.com
On Fri, Sep 21, 2012 at 10:25 AM, Lille <lille.p...@gmail.com> wrote:

There seems to be nothing wrong in your code.  All I can think of that causes this is if another dom element
has an id of search-markets.  Can you confirm that your view only has one dom with this id?

Yes, I confirm. I modified the code to ensure no interference...

$('#search-markets').autocomplete ->
source: "/searches" 

For what it's worth, the coffeescript compiles to this...

    $('#search-markets').autocomplete(function() { return { source: "/searches" }; });

Ah it's stupid of me not to see the difference.  Remove -> and it should work.
 

I see other approaches using more of the autocompletion settings, including callbacks, but I wonder why my simple attempt fails.

Lille

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/jzbiAgt8o7UJ.

For more options, visit https://groups.google.com/groups/opt_out.
 
 

Lille

unread,
Sep 20, 2012, 9:31:41 PM9/20/12
to rubyonra...@googlegroups.com

There seems to be nothing wrong in your code.  All I can think of that causes this is if another dom element
has an id of search-markets.  Can you confirm that your view only has one dom with this id?

Yes, I confirm. I modified the code to ensure no interference...

$('#search-markets').autocomplete ->
source: "/searches" 

For what it's worth, the coffeescript compiles to this...

    $('#search-markets').autocomplete(function() { return { source: "/searches" }; });

Ah it's stupid of me not to see the difference.  Remove -> and it should work.

No, doing that results in no network activity from the widget, at all -- kills it. 

This is what the code compiles to without '->'...

$('#search-markets').autocomplete({
source: "/searches"
});

That looks better to me, but it's not happening.

Lille 

 

Jim Ruther Nill

unread,
Sep 20, 2012, 9:41:21 PM9/20/12
to rubyonra...@googlegroups.com
That's the right js.  You should paste here the code which handles requests to /searches.
 

Lille 

 

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/lnmGrpvB_1IJ.

For more options, visit https://groups.google.com/groups/opt_out.
 
 

Lille

unread,
Sep 20, 2012, 10:03:11 PM9/20/12
to rubyonra...@googlegroups.com
This is what the code compiles to without '->'...

$('#search-markets').autocomplete({
source: "/searches"
});

That looks better to me, but it's not happening.

That's the right js.  You should paste here the code which handles requests to /searches.

Here's a curl to confirm that the resource works...

["seom","some marker","some market","some market","some market","some market","some market","some market","some market",...] 

Could it be the response format? I don't think so, I get positive results when I do something like this...

$("input#search-markets").autocomplete(
source: (request, response) ->
$.getJSON("/searches", { term: request }, (response) -> 
response(result)
)
# $.each(result, (i, val) -> console.log("fuck: "+val)))
select: (event, ui) ->
window.location = ui.item.value
false
)

I'd just like to know why the simple form fails. 

I guess I'll drop this soon, as it feels idiosyncratic without broader interest.

Final call for any comments!

Lille

Lille

unread,
Sep 27, 2012, 7:16:19 PM9/27/12
to rubyonra...@googlegroups.com
I'd just like to know why the simple form fails. 

Turns out that a customized autocompletion file that I had included from vendor/assets/javascripts was superseding jquery-ui and, once removed, I got the expected behavior -- so, this was completely one-off. Sorry not to have noticed it, sooner.

Lille
 
Reply all
Reply to author
Forward
0 new messages