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

Posted by Lille (Guest)
on 2012-09-21 01:14
(Received via mailing list)
Hey,

I'm able to duplicate everything in Ryan Bates' screencast on jQueryUI
autocomplete 
(#102<http://railscasts.com/episodes/102-auto-complete-a...),
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
Posted by Jim ruther Nill (jimboker)
on 2012-09-21 02:11
(Received via mailing list)
On Fri, Sep 21, 2012 at 9:12 AM, Lille <lille.penguini@gmail.com> wrote:

> size="50" type="text" autocomplete="off">
>

> ...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?


>  --
>
--
Posted by Lille (Guest)
on 2012-09-21 02:26
(Received via mailing list)
>
>
> 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
Posted by Jim ruther Nill (jimboker)
on 2012-09-21 02:44
(Received via mailing list)
On Fri, Sep 21, 2012 at 10:25 AM, Lille <lille.penguini@gmail.com> 
wrote:

> 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.


> To unsubscribe from this group, send email to
> rubyonrails-talk+unsubscribe@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rubyonrails-talk/-....
>
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



--
Posted by Lille (Guest)
on 2012-09-21 03:32
(Received via mailing list)
>>
>> 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
Posted by Jim ruther Nill (jimboker)
on 2012-09-21 03:43
(Received via mailing list)
On Fri, Sep 21, 2012 at 11:31 AM, Lille <lille.penguini@gmail.com> 
wrote:

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


> rubyonrails-talk+unsubscribe@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rubyonrails-talk/-....
>
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



--
Posted by Lille (Guest)
on 2012-09-21 04:04
(Received via mailing list)
> 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
Posted by Lille (Guest)
on 2012-09-28 01:17
(Received via mailing list)
>
> 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
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.