Hi Guys,
I am trying to get my head around drop down menus and observe_field
(ajax?)
I have :
a ''job'' model
a vfxshotid model
A job has_many :vfxshotids
A vfxshotid belongs_to :job
I need a page that has 2 drop down menus
The first - list of ''vfxshotids'' for a job
The second - is a list of directories in a ''vfxshotid''
directory.
At the moment I don''t know how to pass the arguements around. I
followed
this post but i can get it to work, and i wonder if the code is out of
date anyway -
http://www.nabble.com/related-drop-down-list---ajax-td2367869.html
If anyone can give me some advice I''d really appreciate it.
Thanks!
Adam
Here is my code:
------------------------------------------------------------
VIEW - newvfxasset.html.erb
------------------------------------------------------------
<% title ''New Asset''%>
<h1>New asset</h1>
<%= error_messages_for :asset %>
<% form_for @asset do |f| %>
<select name="vfxshotid" id="vfxshotid">
<option value="">Select VFX shot id</option>
<% for vfxshot in
(1..-3jiNAoIpU+V6EW1nppFElMeiDAhbh1OB@public.gmane.org) %>
<option value="<%= vfxshot.object_id %>">
<%= @job.vfxshotids[vfxshot].jobvfxshot_name %>
</option>
<% end %>
</select>
<div id="vfxapp_id_container">
<select id=''vfxapp_id_container''
name=''vfxapp_id_container''>
<option value=''''>Select VFX app</option>
</select>
</div>
<%= observe_field("vfxshotid", :frequency => 0.25, :update
=>
"vfxapp_id_container", :url => { :action =>
:get_vfxapps_for_vfxshotid
}, :with => "''vfxshotid=''+value") %>
<p>
<%= f.submit "Create" %>
</p>
<% end %>
<%= link_to ''Back'', assets_path %>
------------------------------------------------------------
jobs controller
------------------------------------------------------------
def newvfxasset
def get_vfxapps_for_vfxshotid
@loggedinuser = session[:user_id]
@assetstartpath = @@jobsrootdirectory + ''/'' +
@job.jobidstring +
''_'' + @job.client.name + ''/vfx/'' + vfxshotid
+ ''/'' + @loggedinuser.login
print @assetstartpath
# @vfxshotidvfxapps = [Dir.glob(@assetstartpath)]
@vfxshotidvfxpaps = [''a'', ''b'',
''c'', ''d'']
end
@job = Job.find(params[:id])
@asset = Asset.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @job }
end
end
--
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
-~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Aug-31 12:54 UTC
Re: newb q: Dynamic Dropdown Menu - Observe field - Ajax
On Aug 31, 1:19 pm, Adam Teale <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Hi Guys, > > I am trying to get my head around drop down menus and observe_field > (ajax?)Yup observe_field uses ajaz> > At the moment I don''t know how to pass the arguements around. I followed > this post but i can get it to work, and i wonder if the code is out of > date anyway -http://www.nabble.com/related-drop-down-list---ajax-td2367869.html >Well something that will confuse the browser is the fact that you''ve got 2 things on the page with id vfxapp_id_container which can easily have unpredictable consequences. Your get_vfxapps_for_vfxshotid action should be using params[:vfxshotid] since that''s what will get submitted by observe_field. Other than that you haven''t said exactly what is happening/not working so it''s hard to say anything more. Fred --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Fred thanks for replying - I will try to apply what you''ve suggested and post the results, cheers! -- 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 Fred,
I think I have made some progress - i think my arguments get passed into
a function in my controller - but i just can''t seem to get them to
appear in the 2nd drop down menu - although the menu does seem to
refresh (but is rendered blank).
Mind taking a look?
Any pointers would be great!
Thanks
Adam
----------
controller
----------
def get_vfxapps_for_vfxshotid
@job = Vfxshotid.find(params[:id]).job
@loggedinuser_login = User.find(session[:user_id]).login
puts ''job: '' + @job.jobidstring
puts ''user: '' + @loggedinuser_login
@vfxshotid = Vfxshotid.find(params[:id]).jobvfxshot_name
@assetstartpath = @@jobsrootdirectory + ''/'' +
@job.jobidstring +
''_'' + @job.client.name + ''/vfx'' +
''/'' + @vfxshotid + ''/work/'' +
@loggedinuser_login.to_s
@vfxshotidvfxapps = Dir.glob(@assetstartpath + "/*/*")
#see in terminal if directories are found
puts ''path: '' + @assetstartpath
for dir in @vfxshotidvfxapps
puts dir
end
end
--------------------
view - newvfxasset.html.erb
--------------------
<% title ''New Asset''%>
<h1>New asset</h1>
<%= error_messages_for :asset %>
<% form_for @asset do |f| %>
<select name="vfxshotid" id="vfxshotid">
<%= f.collection_select :job_id, @job.vfxshotids, :id,
:jobvfxshot_name, :prompt => "Select your VFX Shot ID" %>
</select>
<select id="vfxshotidapps" name="vfxshotidapp">
<option value="">Select your VFX App</option>
</select>
<%= observe_field("vfxshotid",
:url => { :action => "get_vfxapps_for_vfxshotid" },
:update => "vfxshotidapps",
:with => "''id='' + value",
:on => "changed")
%>
<%= f.submit "Create" %>
<% end %>
<%= link_to ''Back'', assets_path %>
--------------------
view - get_vfxapps_for_vfxshotid.html.erb
--------------------
<% for dir in @vfxshotidvfxapps %>
<option value="<%= dir %>"><%= dir
%></option>
<% end %>
--
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
-~----------~----~----~----~------~----~------~--~---
haha! success! the controller''s function seemed to be outputting with a layout - ???? i read that to disable a rendered layout u just need to append the following to a function: render :layout => false sweet! -- 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 -~----------~----~----~----~------~----~------~--~---