hi all,,
i got a little problem here.
with my code below, what i am trying to do is to select the value from
drop down list, and then updating the value of the text field.
However, after updating the value of the text field, the value of the
text field
is not submitted by pressing the submit button.
chapter controllers:
def upload
@chapter = Chapter.new
@uploads = Book.find(:all)
def get_chapter_number
@books= Book.find(:first,
:conditions => ["title = ?",
params["title"]])
render :layout => false
end
end
views for upload:
<%= javascript_include_tag "prototype" %>
<% form_for (:chapter, @chapter, :url=>{:action =>
"uploadFile"}, :html => {:multipart => true}) do |f| -%>
<label class="required">series title:</label>
<select name="upload[title]"
id="upload[title]">
<% @uploads.each do |upload| %>
<option value="<%= upload.title %>">
<%= upload.title %>
</option>
<% end %>
</select>
<label class="required"> chapter: </label>
<div id="chapter_container">
</div>
<%= observe_field("upload
[title]", :update=>"chapter_container", :url=>{:action
=>
"get_chapter_number"}, :with => ''title'',
:on=>"changed") %>
<%= submit_tag ''Upload'', :class =>
"submit" %>
views for get_chapter_number:
<input type="text" id="upload_number_of_chapters"
name="upload
[number_of_chapters]" value= <%= @books.number_of_chapters + 1 %>
size
= "30" />
appreciate any help.. thanks,
prawira
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
I believe you are missing an input field for your updated value. The submit will pass along the values of the input fields. Something you just ''write'' inside a <div> tag will not be considered ''input'' data. You could try to replace the <div> with something like < %= :chapter.field_text :container... %> Pepe On Dec 18, 8:22 am, Pra Ng <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> hi all,, > > i got a little problem here. > with my code below, what i am trying to do is to select the value from > drop down list, and then updating the value of the text field. > However, after updating the value of the text field, the value of the > text field > is not submitted by pressing the submit button. > > chapter controllers: > def upload > @chapter = Chapter.new > @uploads = Book.find(:all) > > def get_chapter_number > @books= Book.find(:first, > :conditions => ["title = ?", params["title"]]) > render :layout => false > end > end > > views for upload: > <%= javascript_include_tag "prototype" %> > <% form_for (:chapter, @chapter, :url=>{:action => > "uploadFile"}, :html => {:multipart => true}) do |f| -%> > > <label class="required">series title:</label> > <select name="upload[title]" id="upload[title]"> > <% @uploads.each do |upload| %> > <option value="<%= upload.title %>"> > <%= upload.title %> > </option> > <% end %> > </select> > > <label class="required"> chapter: </label> > <div id="chapter_container"> > </div> > > <%= observe_field("upload > [title]", :update=>"chapter_container", :url=>{:action => > "get_chapter_number"}, :with => ''title'', :on=>"changed") %> > > <%= submit_tag ''Upload'', :class => "submit" %> > views for get_chapter_number: > <input type="text" id="upload_number_of_chapters" name="upload > [number_of_chapters]" value= <%= @books.number_of_chapters + 1 %> size > = "30" /> > > appreciate any help.. thanks, > > prawira > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
pepe wrote:> I believe you are missing an input field for your updated value. The > submit will pass along the values of the input fields. Something you > just ''write'' inside a <div> tag will not be considered ''input'' data. > You could try to replace the <div> with something like < > %= :chapter.field_text :container... %> > > PepeHi Pepe, Thanks for your advice.. I still don''t get how it supposed to work though. I am still not sure how to get it work by replacing the <div> tag. I tried to replace the <div> tag with <% input type="text", id="chapter_container", name="chapter_container" %> but it keep giving me error "The error occurred while evaluating nil.column_for_attribute". Any idea? Thanks -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Pra Ng wrote:> pepe wrote: >> I believe you are missing an input field for your updated value. The >> submit will pass along the values of the input fields. Something you >> just ''write'' inside a <div> tag will not be considered ''input'' data. >> You could try to replace the <div> with something like < >> %= :chapter.field_text :container... %> >> >> Pepe > > Hi Pepe, > > Thanks for your advice.. > I still don''t get how it supposed to work though. > I am still not sure how to get it work by replacing the <div> tag. > I tried to replace the <div> tag with > <% input type="text", id="chapter_container", name="chapter_container" > %> > but it keep giving me error "The error occurred while evaluating > nil.column_for_attribute". > Any idea? > > ThanksHi Pepe, I have tried to use <input id="chapter_container" name="chapter_container">. It has no error msg, but the "input" tag wouldnt get replaced as I wanted it to be. When I am using the <div> tag, the div tag will get replaced with the function that I called which is "get_chapter_number". After I replace it with "input" tag, it wouldnt get replaced. any idea on how to get it done? Regards, Prawira -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Pra, Sorry, I have been (still am) busy. I''ll try to give you an example ASAP but it might take me a little while. Hopefully soon. Pepe On Dec 20, 2:23 pm, Pra Ng <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Pra Ng wrote: > > pepe wrote: > >> I believe you are missing an input field for your updated value. The > >> submit will pass along the values of the input fields. Something you > >> just ''write'' inside a <div> tag will not be considered ''input'' data. > >> You could try to replace the <div> with something like < > >> %= :chapter.field_text :container... %> > > >> Pepe > > > Hi Pepe, > > > Thanks for your advice.. > > I still don''t get how it supposed to work though. > > I am still not sure how to get it work by replacing the <div> tag. > > I tried to replace the <div> tag with > > <% input type="text", id="chapter_container", name="chapter_container" > > %> > > but it keep giving me error "The error occurred while evaluating > > nil.column_for_attribute". > > Any idea? > > > Thanks > > Hi Pepe, > I have tried to use <input id="chapter_container" > name="chapter_container">. > It has no error msg, but the "input" tag wouldnt get replaced as I > wanted it to be. When I am using the <div> tag, the div tag will get > replaced with the > function that I called which is "get_chapter_number". > After I replace it with "input" tag, it wouldnt get replaced. > any idea on how to get it done? > > Regards, > > Prawira > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ 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 rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Pra,
Sorry it took so long. Here is a full example:
This is my view (file name is ''index.rhtml''):
<%= javascript_include_tag :defaults %>
Select one: <%= select_tag ''my_select'',
''<option>one</
option><option>two</option><option>three</option>''
%>
<div id=''to_be_updated''>
<%= render :partial => ''input_field'' %>
</div>
<%= observe_field ''my_select'',
:frequency => 0.5,
:update => ''to_be_updated'',
:url => {:action => ''observe_my_select''},
:with => ''my_select'' %>
This is my partial (file name is ''_input_field.rhtml''):
Output value: <%= text_field_tag ''input_field'',
@to_be_updated %>
This is my controller (file name is ''observe_controller.rb''):
class ObserveController < ApplicationController
def observe_my_select
@to_be_updated = params[:my_select]
render :partial => ''input_field''
end
end
Here is how it works:
1. In the view you have to include the ''prototype'' Javascript
library
with <%= javascript_include_tag :defaults %>
2. In the view you have to have an element with an id value that
you''ll use in the ''observe_field'' method, which will
be the target of
the partial page update. In this case I named mine
''to_be_updated''.
Whatever is between the <div> tags will be replaced every time you
chose a value from the select list.
3. My view initially displays a partial between the <div> tags with
the field that I will be updating with the value from the select list.
If I didn''t render the partial when first displaying the page, the
<div> would be empty and the field would obviously not display.
4. In the ''observe_field'' method:
4.1. "frequency" sets the time interval that the select field should
be checked for changes. Here we are checking every 1/2 second
4.2. "update" indicates the tag with the id which contents are going
to be replaced. In this case it is ''to_be_updated'', as
indicated above
4.3. "url" indicates which resource (method) will be called in the
controller when a change is observed in the select list. In this case
the method name is ''observe_my_select''
4.4. "with" indicates what value must be passed to the method
indicated in the url. In this case it is the value coming from the
select list.
5. You need a partial with the field definition (_input_field.rhtml)
that will be displayed every time a selection is made. You need the
field in a partial because you are building it on the fly, since you
need to update the field''s contents (with class variable
@to_be_updated).
6. The controller contains the method ''observe_my_select'',
which
updates class variable "@to_be_updated" with the value sent from the
Javascript generated by ''observe_field'' (:with =>
''my_select).
7. The controller method returns the result of calling a
''render''
method with the partial containing the input field definition, that
way the input field gets ''written'' to the page and uses the
value of
@to_be_updated to initialize its contents.
Please let me know if you need anything else.
Pepe
On Dec 20, 2:23 pm, Pra Ng
<rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>
wrote:> Pra Ng wrote:
> > pepe wrote:
> >> I believe you are missing an input field for your updated value.
The
> >> submit will pass along the values of the input fields. Something
you
> >> just ''write'' inside a <div> tag will not
be considered ''input'' data.
> >> You could try to replace the <div> with something like <
> >> %= :chapter.field_text :container... %>
>
> >> Pepe
>
> > Hi Pepe,
>
> > Thanks for your advice..
> > I still don''t get how it supposed to work though.
> > I am still not sure how to get it work by replacing the <div>
tag.
> > I tried to replace the <div> tag with
> > <% input type="text", id="chapter_container",
name="chapter_container"
> > %>
> > but it keep giving me error "The error occurred while evaluating
> > nil.column_for_attribute".
> > Any idea?
>
> > Thanks
>
> Hi Pepe,
> I have tried to use <input id="chapter_container"
> name="chapter_container">.
> It has no error msg, but the "input" tag wouldnt get replaced as
I
> wanted it to be. When I am using the <div> tag, the div tag will get
> replaced with the
> function that I called which is "get_chapter_number".
> After I replace it with "input" tag, it wouldnt get replaced.
> any idea on how to get it done?
>
> Regards,
>
> Prawira
> --
> Posted viahttp://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
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
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---