Lille
(Lille)
September 20, 2012, 11:12pm
1
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:
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
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:
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?
Lille
(Lille)
September 21, 2012, 12:25am
3
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
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.
Lille
(Lille)
September 21, 2012, 1:31am
5
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
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.
That’s the right js. You should paste here the code which handles requests to /searches.
Lille
(Lille)
September 21, 2012, 2:03am
7
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…
curl ‘http://localhost:3000/searches?term=s ’
[“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
(Lille)
September 27, 2012, 11:16pm
8
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