Not sure what I am doing wrong. Here is what i am trying to do (code
to follow).
I have a form to create a new book. This book can have many authors
and I wanted to be able to add the authors based on if they appear in
the authors table. I originally was going about it a long and arduous
way where I had several forms. After thinking about it I decided to
dynamically add new fields to the form for the authors. To do this I
created an action that renders a partial which is just a
text_field_tag to the form. But I want this text field to use
autocomplete. Here is the code (hope it explains better what I am
trying to do)
#View
# This is the first link when the form is first generated there are
no text fields for authors (it is not required to add one)
<%= link_to_remote("Add", :url => {:controller =>
"book", :action =>
"ajax_add_credit_to_form", :credit_number => 0}) %>
# Controller
#This action figures out if it is the first time I am adding an
author or subsequent times after that and than either adds the UL or
just inserts
# a new li
def ajax_add_credit_to_form
@credit_number = (params[:credit_number]).to_i
render :update do |page|
if @credit_number == 0
page.replace_html ''credits_list'', :partial =>
''new_credit_field''
else
page.insert_html :bottom, ''the_credit_list'', :partial
=>
''new_credit_field''
end
end
end
# Partial
# This is where I am running into issues
<% if @credit_number == 0 %>
<ul id="the_credit_list">
<li id="credit_<%= @credit_number %>">
<%= text_field_tag("#{@credit_number}creator", nil, {:size =>
''15''}) %>
<%= auto_complete_field("#{@credit_number}creator", :url =>
{:action => "auto_complete_for_author_name"}, :with => "#
{@credit_number}creator") %>
<%= link_to_remote("Add", :url => {:controller =>
"book", :action
=> "ajax_add_credit_to_form", :credit_number => (@credit_number
+
1)}) %>
</li>
</ul>
<% else %>
<li id="credit_<%= @credit_number %>">
<%= text_field_tag("#{@credit_number}creator", nil, {:size =>
''15''}) %>
<%= auto_complete_field("#{@credit_number}creator", :url =>
{:action => "auto_complete_for_author_name"}, :with => "#
{@credit_number}creator") %>
<%= link_to_remote("Add", :url => {:controller =>
"book", :action
=> "ajax_add_credit_to_form", :credit_number => (@credit_number
+
1)}) %>
</li>
<% end %>
In my controller I have the following set at the top:
auto_complete_for :author, :name
But when I load the page in the browser and I click on add for the
first time I get the following error in firebug:
missing variable nameprototype.js?1144376... (line 181)
var 0creator_auto_completer = new
Ajax.Autocompleter(''0creator'',
''0creator_auto_complete'',
''/issue/auto_complete_for_author_name'',
{callback:function(element, value) { return 0creator }})
Any thoughts? I can''t use the text_field_with_autocomplete because I
could have multiple fields with the same name which wont work. I
think I am on the right track but can not figure out what I am doing
wrong. I am pretty sure it is the auto_complete_field tag and I have
tried it a couple of different ways, one way was completely removing
teh :with option but I received the same error.
Thanks for the help
Andrew
Not sure what I am doing wrong. Here is what i am trying to do (code
to follow).
I have a form to create a new book. This book can have many authors
and I wanted to be able to add the authors based on if they appear in
the authors table. I originally was going about it a long and arduous
way where I had several forms. After thinking about it I decided to
dynamically add new fields to the form for the authors. To do this I
created an action that renders a partial which is just a
text_field_tag to the form. But I want this text field to use
autocomplete. Here is the code (hope it explains better what I am
trying to do)
#View
# This is the first link when the form is first generated there are
no text fields for authors (it is not required to add one)
<%= link_to_remote("Add", :url => {:controller =>
"book", :action =>
"ajax_add_credit_to_form", :credit_number => 0}) %>
# Controller
#This action figures out if it is the first time I am adding an
author or subsequent times after that and than either adds the UL or
just inserts
# a new li
def ajax_add_credit_to_form
@credit_number = (params[:credit_number]).to_i
render :update do |page|
if @credit_number == 0
page.replace_html ''credits_list'', :partial =>
''new_credit_field''
else
page.insert_html :bottom, ''the_credit_list'', :partial
=>
''new_credit_field''
end
end
end
# Partial
# This is where I am running into issues
<% if @credit_number == 0 %>
<ul id="the_credit_list">
<li id="credit_<%= @credit_number %>">
<%= text_field_tag("#{@credit_number}creator", nil, {:size =>
''15''}) %>
<%= auto_complete_field("#{@credit_number}creator", :url =>
{:action => "auto_complete_for_author_name"}, :with => "#
{@credit_number}creator") %>
<%= link_to_remote("Add", :url => {:controller =>
"book", :action
=> "ajax_add_credit_to_form", :credit_number => (@credit_number
+
1)}) %>
</li>
</ul>
<% else %>
<li id="credit_<%= @credit_number %>">
<%= text_field_tag("#{@credit_number}creator", nil, {:size =>
''15''}) %>
<%= auto_complete_field("#{@credit_number}creator", :url =>
{:action => "auto_complete_for_author_name"}, :with => "#
{@credit_number}creator") %>
<%= link_to_remote("Add", :url => {:controller =>
"book", :action
=> "ajax_add_credit_to_form", :credit_number => (@credit_number
+
1)}) %>
</li>
<% end %>
In my controller I have the following set at the top:
auto_complete_for :author, :name
But when I load the page in the browser and I click on add for the
first time I get the following error in firebug:
missing variable nameprototype.js?1144376... (line 181)
var 0creator_auto_completer = new
Ajax.Autocompleter(''0creator'',
''0creator_auto_complete'',
''/issue/auto_complete_for_author_name'',
{callback:function(element, value) { return 0creator }})
Any thoughts? I can''t use the text_field_with_autocomplete because I
could have multiple fields with the same name which wont work. I
think I am on the right track but can not figure out what I am doing
wrong. I am pretty sure it is the auto_complete_field tag and I have
tried it a couple of different ways, one way was completely removing
teh :with option but I received the same error.
Thanks for the help
Andrew
Well I figured out my issue so figured I would post it. Rather dumb of me. The error was due to the field starting with a 0 (zero). It did not like the variable beginning with a number. Also found that the I needed to add the div tag in for the return which I did not think I would need as using text_field_with_auto_complete does it for you. And lastly I needed to create a custom search action in my controller in order to get the right search. You can''t use the auto_complete_for action when working with dynamic fields the way that I was. Sorry for the earlier double post. Mail said that I still had a draft and so I sent again. Andrew On May 23, 2006, at 1:23 PM, Andrew Filipowski wrote:> Not sure what I am doing wrong. Here is what i am trying to do > (code to follow). > > I have a form to create a new book. This book can have many authors > and I wanted to be able to add the authors based on if they appear > in the authors table. I originally was going about it a long and > arduous way where I had several forms. After thinking about it I > decided to dynamically add new fields to the form for the authors. > To do this I created an action that renders a partial which is just > a text_field_tag to the form. But I want this text field to use > autocomplete. Here is the code (hope it explains better what I am > trying to do) > > #View > > # This is the first link when the form is first generated there are > no text fields for authors (it is not required to add one) > > <%= link_to_remote("Add", :url => {:controller => "book", :action > => "ajax_add_credit_to_form", :credit_number => 0}) %> > > # Controller > > #This action figures out if it is the first time I am adding an > author or subsequent times after that and than either adds the UL > or just inserts > # a new li > > def ajax_add_credit_to_form > @credit_number = (params[:credit_number]).to_i > render :update do |page| > if @credit_number == 0 > page.replace_html ''credits_list'', :partial => > ''new_credit_field'' > else > page.insert_html :bottom, ''the_credit_list'', :partial => > ''new_credit_field'' > end > end > end > > # Partial > > # This is where I am running into issues > > <% if @credit_number == 0 %> > <ul id="the_credit_list"> > <li id="credit_<%= @credit_number %>"> > <%= text_field_tag("#{@credit_number}creator", nil, {:size => > ''15''}) %> > <%= auto_complete_field("#{@credit_number}creator", :url => > {:action => "auto_complete_for_author_name"}, :with => "# > {@credit_number}creator") %> > <%= link_to_remote("Add", :url => {:controller => > "book", :action => "ajax_add_credit_to_form", :credit_number => > (@credit_number + 1)}) %> > > </li> > </ul> > <% else %> > <li id="credit_<%= @credit_number %>"> > <%= text_field_tag("#{@credit_number}creator", nil, {:size => > ''15''}) %> > <%= auto_complete_field("#{@credit_number}creator", :url => > {:action => "auto_complete_for_author_name"}, :with => "# > {@credit_number}creator") %> > <%= link_to_remote("Add", :url => {:controller => > "book", :action => "ajax_add_credit_to_form", :credit_number => > (@credit_number + 1)}) %> > </li> > <% end %> > > In my controller I have the following set at the top: > > auto_complete_for :author, :name > > But when I load the page in the browser and I click on add for the > first time I get the following error in firebug: > > missing variable nameprototype.js?1144376... (line 181) > var 0creator_auto_completer = new Ajax.Autocompleter(''0creator'', > ''0creator_auto_complete'', ''/issue/auto_complete_for_author_name'', > {callback:function(element, value) { return 0creator }}) > > Any thoughts? I can''t use the text_field_with_autocomplete because > I could have multiple fields with the same name which wont work. I > think I am on the right track but can not figure out what I am > doing wrong. I am pretty sure it is the auto_complete_field tag and > I have tried it a couple of different ways, one way was completely > removing teh :with option but I received the same error. > > Thanks for the help > > Andrew_______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails