Autocomplete multiple fields with jquery in Rails 5
up vote
0
down vote
favorite
I am building an admin form where I am using Jquery's Autocomplete widget for one of the text fields.
In a field called customer_phone_number, when someone types the phone number, autocomplete checks the database to see if it exists and lists the existing options. Once a phone number is selected, I want it to fill out another field called customer_name. I've managed to autocomplete the first one but not the other. Here's what my code looks like right now:
This is the View:
<div class="col-md-4 input">
<div class="form-group">
<label>Customer's Phone Number</label>
<%= f.text_field :customer_phone_number, class: "form-control", data: { autocomplete_source: customers_path } %>
</div>
</div>
<div class="col-md-4 input">
<div class="form-group">
<label>Customer's Name</label>
<%= f.text_field :customer_name, class: "form-control", data: { autocomplete_source: customers_path } %>
</div>
</div>
The javascript file:
jQuery(function() {
return $('#customer_phone_number').autocomplete({
source: $('#customer_phone_number').data('autocomplete-source'),
select: function(event, ui) {
event.preventDefault(),
$(this).val(ui.item.phone_number),
$('#customer_name').val(ui.item.name);
}
});
});
And Controller:
def index
@customer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
render json: @customer.map{ |customer| { :phone_number => customer.phone_number, :name => customer.name } }
# render json: @customer.pluck(:phone_number, :name)
end
How can I pass the :name value to the customer_name field?
jquery ruby-on-rails ruby autocomplete
add a comment |
up vote
0
down vote
favorite
I am building an admin form where I am using Jquery's Autocomplete widget for one of the text fields.
In a field called customer_phone_number, when someone types the phone number, autocomplete checks the database to see if it exists and lists the existing options. Once a phone number is selected, I want it to fill out another field called customer_name. I've managed to autocomplete the first one but not the other. Here's what my code looks like right now:
This is the View:
<div class="col-md-4 input">
<div class="form-group">
<label>Customer's Phone Number</label>
<%= f.text_field :customer_phone_number, class: "form-control", data: { autocomplete_source: customers_path } %>
</div>
</div>
<div class="col-md-4 input">
<div class="form-group">
<label>Customer's Name</label>
<%= f.text_field :customer_name, class: "form-control", data: { autocomplete_source: customers_path } %>
</div>
</div>
The javascript file:
jQuery(function() {
return $('#customer_phone_number').autocomplete({
source: $('#customer_phone_number').data('autocomplete-source'),
select: function(event, ui) {
event.preventDefault(),
$(this).val(ui.item.phone_number),
$('#customer_name').val(ui.item.name);
}
});
});
And Controller:
def index
@customer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
render json: @customer.map{ |customer| { :phone_number => customer.phone_number, :name => customer.name } }
# render json: @customer.pluck(:phone_number, :name)
end
How can I pass the :name value to the customer_name field?
jquery ruby-on-rails ruby autocomplete
It should work with your code. Check whether the id attribute ofcustomer_name
text_field
iscustomer_name
or not.
– Pavan
Sep 17 at 18:51
It is, but the autocomplete list still seems to be empty. Do you have any idea of what else may be going wrong? Thanks a lot.
– Johnny
Sep 17 at 22:15
@Johnny A bit confusion with your code is the field namecustomer_phone_number
orphone_number
inCustomer
model?
– Gabbar
Sep 18 at 4:45
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I am building an admin form where I am using Jquery's Autocomplete widget for one of the text fields.
In a field called customer_phone_number, when someone types the phone number, autocomplete checks the database to see if it exists and lists the existing options. Once a phone number is selected, I want it to fill out another field called customer_name. I've managed to autocomplete the first one but not the other. Here's what my code looks like right now:
This is the View:
<div class="col-md-4 input">
<div class="form-group">
<label>Customer's Phone Number</label>
<%= f.text_field :customer_phone_number, class: "form-control", data: { autocomplete_source: customers_path } %>
</div>
</div>
<div class="col-md-4 input">
<div class="form-group">
<label>Customer's Name</label>
<%= f.text_field :customer_name, class: "form-control", data: { autocomplete_source: customers_path } %>
</div>
</div>
The javascript file:
jQuery(function() {
return $('#customer_phone_number').autocomplete({
source: $('#customer_phone_number').data('autocomplete-source'),
select: function(event, ui) {
event.preventDefault(),
$(this).val(ui.item.phone_number),
$('#customer_name').val(ui.item.name);
}
});
});
And Controller:
def index
@customer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
render json: @customer.map{ |customer| { :phone_number => customer.phone_number, :name => customer.name } }
# render json: @customer.pluck(:phone_number, :name)
end
How can I pass the :name value to the customer_name field?
jquery ruby-on-rails ruby autocomplete
I am building an admin form where I am using Jquery's Autocomplete widget for one of the text fields.
In a field called customer_phone_number, when someone types the phone number, autocomplete checks the database to see if it exists and lists the existing options. Once a phone number is selected, I want it to fill out another field called customer_name. I've managed to autocomplete the first one but not the other. Here's what my code looks like right now:
This is the View:
<div class="col-md-4 input">
<div class="form-group">
<label>Customer's Phone Number</label>
<%= f.text_field :customer_phone_number, class: "form-control", data: { autocomplete_source: customers_path } %>
</div>
</div>
<div class="col-md-4 input">
<div class="form-group">
<label>Customer's Name</label>
<%= f.text_field :customer_name, class: "form-control", data: { autocomplete_source: customers_path } %>
</div>
</div>
The javascript file:
jQuery(function() {
return $('#customer_phone_number').autocomplete({
source: $('#customer_phone_number').data('autocomplete-source'),
select: function(event, ui) {
event.preventDefault(),
$(this).val(ui.item.phone_number),
$('#customer_name').val(ui.item.name);
}
});
});
And Controller:
def index
@customer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
render json: @customer.map{ |customer| { :phone_number => customer.phone_number, :name => customer.name } }
# render json: @customer.pluck(:phone_number, :name)
end
How can I pass the :name value to the customer_name field?
jquery ruby-on-rails ruby autocomplete
jquery ruby-on-rails ruby autocomplete
asked Sep 17 at 18:46
Johnny
155
155
It should work with your code. Check whether the id attribute ofcustomer_name
text_field
iscustomer_name
or not.
– Pavan
Sep 17 at 18:51
It is, but the autocomplete list still seems to be empty. Do you have any idea of what else may be going wrong? Thanks a lot.
– Johnny
Sep 17 at 22:15
@Johnny A bit confusion with your code is the field namecustomer_phone_number
orphone_number
inCustomer
model?
– Gabbar
Sep 18 at 4:45
add a comment |
It should work with your code. Check whether the id attribute ofcustomer_name
text_field
iscustomer_name
or not.
– Pavan
Sep 17 at 18:51
It is, but the autocomplete list still seems to be empty. Do you have any idea of what else may be going wrong? Thanks a lot.
– Johnny
Sep 17 at 22:15
@Johnny A bit confusion with your code is the field namecustomer_phone_number
orphone_number
inCustomer
model?
– Gabbar
Sep 18 at 4:45
It should work with your code. Check whether the id attribute of
customer_name
text_field
is customer_name
or not.– Pavan
Sep 17 at 18:51
It should work with your code. Check whether the id attribute of
customer_name
text_field
is customer_name
or not.– Pavan
Sep 17 at 18:51
It is, but the autocomplete list still seems to be empty. Do you have any idea of what else may be going wrong? Thanks a lot.
– Johnny
Sep 17 at 22:15
It is, but the autocomplete list still seems to be empty. Do you have any idea of what else may be going wrong? Thanks a lot.
– Johnny
Sep 17 at 22:15
@Johnny A bit confusion with your code is the field name
customer_phone_number
or phone_number
in Customer
model?– Gabbar
Sep 18 at 4:45
@Johnny A bit confusion with your code is the field name
customer_phone_number
or phone_number
in Customer
model?– Gabbar
Sep 18 at 4:45
add a comment |
2 Answers
2
active
oldest
votes
up vote
0
down vote
Probably you are fetching wrong query as in form field name is customer_phone_number
and in query its phone_number
Assuming in Customer
model field name is customer_phone_number
then query should be
def index
@customer = Customer.order(:customer_phone_number).where("customer_phone_number like ?", "%#{params[:term]}%").limit(5)
render json: @customer.map{ |customer| { :phone_number => customer.customer_phone_number, :name => customer.name } }
end
In the Customer model, the field name is phone_number.
– Johnny
Sep 18 at 5:30
@Johnny If its so then why are you usingcustomer_phone_number
inform_for
?
– Gabbar
Sep 18 at 5:32
No particular reason. That's just how I'm referencing it in another model, because I thought it would make it confusing to not have customer_, especially for the _name field. Wouldn't it?
– Johnny
Sep 18 at 5:41
ok, so Can you run your query at rails consolecustomer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
replaceparams[:term]
with yourquery param
and do you get any record there?
– Gabbar
Sep 18 at 5:54
No, it's not returning anything. The way I've managed to make it work with one attribute was by using pluck: render json: @owner.pluck(:phone_number) When I try something similar with map, it doesn't work though.
– Johnny
Sep 18 at 8:55
|
show 2 more comments
up vote
0
down vote
accepted
I've managed to make it work using a different method with the rails-jquery-autocomplete gem:
https://github.com/risuiowa/rails-jquery-autocomplete/
Using the
autocomplete_field
turned out to be much easier to implement.
Example:
form_for @product do |f|
f.autocomplete_field :brand_name, autocomplete_brand_name_products_path
end
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
Probably you are fetching wrong query as in form field name is customer_phone_number
and in query its phone_number
Assuming in Customer
model field name is customer_phone_number
then query should be
def index
@customer = Customer.order(:customer_phone_number).where("customer_phone_number like ?", "%#{params[:term]}%").limit(5)
render json: @customer.map{ |customer| { :phone_number => customer.customer_phone_number, :name => customer.name } }
end
In the Customer model, the field name is phone_number.
– Johnny
Sep 18 at 5:30
@Johnny If its so then why are you usingcustomer_phone_number
inform_for
?
– Gabbar
Sep 18 at 5:32
No particular reason. That's just how I'm referencing it in another model, because I thought it would make it confusing to not have customer_, especially for the _name field. Wouldn't it?
– Johnny
Sep 18 at 5:41
ok, so Can you run your query at rails consolecustomer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
replaceparams[:term]
with yourquery param
and do you get any record there?
– Gabbar
Sep 18 at 5:54
No, it's not returning anything. The way I've managed to make it work with one attribute was by using pluck: render json: @owner.pluck(:phone_number) When I try something similar with map, it doesn't work though.
– Johnny
Sep 18 at 8:55
|
show 2 more comments
up vote
0
down vote
Probably you are fetching wrong query as in form field name is customer_phone_number
and in query its phone_number
Assuming in Customer
model field name is customer_phone_number
then query should be
def index
@customer = Customer.order(:customer_phone_number).where("customer_phone_number like ?", "%#{params[:term]}%").limit(5)
render json: @customer.map{ |customer| { :phone_number => customer.customer_phone_number, :name => customer.name } }
end
In the Customer model, the field name is phone_number.
– Johnny
Sep 18 at 5:30
@Johnny If its so then why are you usingcustomer_phone_number
inform_for
?
– Gabbar
Sep 18 at 5:32
No particular reason. That's just how I'm referencing it in another model, because I thought it would make it confusing to not have customer_, especially for the _name field. Wouldn't it?
– Johnny
Sep 18 at 5:41
ok, so Can you run your query at rails consolecustomer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
replaceparams[:term]
with yourquery param
and do you get any record there?
– Gabbar
Sep 18 at 5:54
No, it's not returning anything. The way I've managed to make it work with one attribute was by using pluck: render json: @owner.pluck(:phone_number) When I try something similar with map, it doesn't work though.
– Johnny
Sep 18 at 8:55
|
show 2 more comments
up vote
0
down vote
up vote
0
down vote
Probably you are fetching wrong query as in form field name is customer_phone_number
and in query its phone_number
Assuming in Customer
model field name is customer_phone_number
then query should be
def index
@customer = Customer.order(:customer_phone_number).where("customer_phone_number like ?", "%#{params[:term]}%").limit(5)
render json: @customer.map{ |customer| { :phone_number => customer.customer_phone_number, :name => customer.name } }
end
Probably you are fetching wrong query as in form field name is customer_phone_number
and in query its phone_number
Assuming in Customer
model field name is customer_phone_number
then query should be
def index
@customer = Customer.order(:customer_phone_number).where("customer_phone_number like ?", "%#{params[:term]}%").limit(5)
render json: @customer.map{ |customer| { :phone_number => customer.customer_phone_number, :name => customer.name } }
end
answered Sep 18 at 4:50
Gabbar
3,7901317
3,7901317
In the Customer model, the field name is phone_number.
– Johnny
Sep 18 at 5:30
@Johnny If its so then why are you usingcustomer_phone_number
inform_for
?
– Gabbar
Sep 18 at 5:32
No particular reason. That's just how I'm referencing it in another model, because I thought it would make it confusing to not have customer_, especially for the _name field. Wouldn't it?
– Johnny
Sep 18 at 5:41
ok, so Can you run your query at rails consolecustomer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
replaceparams[:term]
with yourquery param
and do you get any record there?
– Gabbar
Sep 18 at 5:54
No, it's not returning anything. The way I've managed to make it work with one attribute was by using pluck: render json: @owner.pluck(:phone_number) When I try something similar with map, it doesn't work though.
– Johnny
Sep 18 at 8:55
|
show 2 more comments
In the Customer model, the field name is phone_number.
– Johnny
Sep 18 at 5:30
@Johnny If its so then why are you usingcustomer_phone_number
inform_for
?
– Gabbar
Sep 18 at 5:32
No particular reason. That's just how I'm referencing it in another model, because I thought it would make it confusing to not have customer_, especially for the _name field. Wouldn't it?
– Johnny
Sep 18 at 5:41
ok, so Can you run your query at rails consolecustomer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
replaceparams[:term]
with yourquery param
and do you get any record there?
– Gabbar
Sep 18 at 5:54
No, it's not returning anything. The way I've managed to make it work with one attribute was by using pluck: render json: @owner.pluck(:phone_number) When I try something similar with map, it doesn't work though.
– Johnny
Sep 18 at 8:55
In the Customer model, the field name is phone_number.
– Johnny
Sep 18 at 5:30
In the Customer model, the field name is phone_number.
– Johnny
Sep 18 at 5:30
@Johnny If its so then why are you using
customer_phone_number
in form_for
?– Gabbar
Sep 18 at 5:32
@Johnny If its so then why are you using
customer_phone_number
in form_for
?– Gabbar
Sep 18 at 5:32
No particular reason. That's just how I'm referencing it in another model, because I thought it would make it confusing to not have customer_, especially for the _name field. Wouldn't it?
– Johnny
Sep 18 at 5:41
No particular reason. That's just how I'm referencing it in another model, because I thought it would make it confusing to not have customer_, especially for the _name field. Wouldn't it?
– Johnny
Sep 18 at 5:41
ok, so Can you run your query at rails console
customer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
replace params[:term]
with your query param
and do you get any record there?– Gabbar
Sep 18 at 5:54
ok, so Can you run your query at rails console
customer = Customer.order(:phone_number).where("phone_number like ?", "%#{params[:term]}%").limit(5)
replace params[:term]
with your query param
and do you get any record there?– Gabbar
Sep 18 at 5:54
No, it's not returning anything. The way I've managed to make it work with one attribute was by using pluck: render json: @owner.pluck(:phone_number) When I try something similar with map, it doesn't work though.
– Johnny
Sep 18 at 8:55
No, it's not returning anything. The way I've managed to make it work with one attribute was by using pluck: render json: @owner.pluck(:phone_number) When I try something similar with map, it doesn't work though.
– Johnny
Sep 18 at 8:55
|
show 2 more comments
up vote
0
down vote
accepted
I've managed to make it work using a different method with the rails-jquery-autocomplete gem:
https://github.com/risuiowa/rails-jquery-autocomplete/
Using the
autocomplete_field
turned out to be much easier to implement.
Example:
form_for @product do |f|
f.autocomplete_field :brand_name, autocomplete_brand_name_products_path
end
add a comment |
up vote
0
down vote
accepted
I've managed to make it work using a different method with the rails-jquery-autocomplete gem:
https://github.com/risuiowa/rails-jquery-autocomplete/
Using the
autocomplete_field
turned out to be much easier to implement.
Example:
form_for @product do |f|
f.autocomplete_field :brand_name, autocomplete_brand_name_products_path
end
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
I've managed to make it work using a different method with the rails-jquery-autocomplete gem:
https://github.com/risuiowa/rails-jquery-autocomplete/
Using the
autocomplete_field
turned out to be much easier to implement.
Example:
form_for @product do |f|
f.autocomplete_field :brand_name, autocomplete_brand_name_products_path
end
I've managed to make it work using a different method with the rails-jquery-autocomplete gem:
https://github.com/risuiowa/rails-jquery-autocomplete/
Using the
autocomplete_field
turned out to be much easier to implement.
Example:
form_for @product do |f|
f.autocomplete_field :brand_name, autocomplete_brand_name_products_path
end
answered Nov 22 at 15:04
Johnny
155
155
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f52374020%2fautocomplete-multiple-fields-with-jquery-in-rails-5%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
It should work with your code. Check whether the id attribute of
customer_name
text_field
iscustomer_name
or not.– Pavan
Sep 17 at 18:51
It is, but the autocomplete list still seems to be empty. Do you have any idea of what else may be going wrong? Thanks a lot.
– Johnny
Sep 17 at 22:15
@Johnny A bit confusion with your code is the field name
customer_phone_number
orphone_number
inCustomer
model?– Gabbar
Sep 18 at 4:45