Hello Everyone, I''m using a facebook_form_for which is bound to a model. In the form I have a form.select which is populated with an array of the names of images. Whenever I change the selection I''d like to display the image on the same page. I tried to change form.select to select_tag but that doesn''t seem to play well with facebook_form_for. I''m pretty confused as to how to approach this. Any suggestion would be appreciated. -- Zhao
Are you calling form.select_tag? That won''t work. select_tag is not a method on the form builder (this is true any time you use form_for in rails) You can do form.text select_tag... to wrap a normal select inside a facebook form. Mike On Sep 11, 2008, at 1:45 AM, Zhao Lu wrote:> Hello Everyone, > > I''m using a facebook_form_for which is bound to a model. In the form > I have a form.select which is populated with an array of the names of > images. > Whenever I change the selection I''d like to display the image on the > same page. I tried to change form.select to select_tag but that > doesn''t seem to play well with facebook_form_for. I''m pretty confused > as to how to approach this. Any suggestion would be appreciated. > > -- > Zhao > _______________________________________________ > Facebooker-talk mailing list > Facebooker-talk at rubyforge.org > http://rubyforge.org/mailman/listinfo/facebooker-talk-- Mike Mangino http://www.elevatedrails.com
Thanks for your answer Mike. I was calling select_tag by itself without the wrapping, which is indeed what I need to do. Now I have passed that having some problem with getting hold of a ruby class I defined from javascript. I can''t seem to find an example online. Here''s my code: <p id="resource" > </p> <% facebook_form_for :facebook_gift, FacebookGift.new, :url => facebook_gifts_path do |f| %> <% @gift_catalog = GiftCatalog.find(:all, :order => "name").map { |gc| [gc.resource.file_name, gc.id]} f.text select_tag(:gift_catalog_id, options_for_select(@gift_catalog), :onchange => "update_gift_display(this.getValue(), ''resource'');") %> //more code here <%end%> I have some javascript on the same page: <script> function update_gift_display(gc_id, update_widget) { uri = GiftCatalog.find(gc_id).resource.resource_uri $(update_widget).setTextValue(uri) } </script> So what I''m trying to achieve is for user to select a gift_catalog_id, then I will get the url to the actual gift (which is linked to gift_catalog). But GiftCatalog is not available in the javascript function. I feel that I''m not on the right track for this. Any suggestion would be greatly appreciated. Zhao On Thu, Sep 11, 2008 at 5:30 AM, Mike Mangino <mmangino at elevatedrails.com> wrote:> Are you calling form.select_tag? That won''t work. select_tag is not a method > on the form builder (this is true any time you use form_for in rails) > > You can do form.text select_tag... to wrap a normal select inside a facebook > form. > > Mike > On Sep 11, 2008, at 1:45 AM, Zhao Lu wrote: > >> Hello Everyone, >> >> I''m using a facebook_form_for which is bound to a model. In the form >> I have a form.select which is populated with an array of the names of >> images. >> Whenever I change the selection I''d like to display the image on the >> same page. I tried to change form.select to select_tag but that >> doesn''t seem to play well with facebook_form_for. I''m pretty confused >> as to how to approach this. Any suggestion would be appreciated. >> >> -- >> Zhao >> _______________________________________________ >> Facebooker-talk mailing list >> Facebooker-talk at rubyforge.org >> http://rubyforge.org/mailman/listinfo/facebooker-talk > > -- > Mike Mangino > http://www.elevatedrails.com > > > >-- Zhao
I think you''re mixing javascript and ruby: uri = GiftCatalog.find(gc_id).resource.resource_uri That''s Ruby, right? You''ll need to either use ajax to get that data or store it in the page somewhere. Maybe you could keep an array that maps between gc_id values and their URLs. I often will prototype my ajax stuff outside of Facebook. It''s easier to debug that way. Once it''s working I convert it to Facebook. Mike On Sep 11, 2008, at 3:06 PM, Zhao Lu wrote:> Thanks for your answer Mike. I was calling select_tag by itself > without the wrapping, > which is indeed what I need to do. Now I have passed that having some > problem with > getting hold of a ruby class I defined from javascript. I can''t seem > to find an example > online. Here''s my code: > > <p id="resource" > </p> > <% facebook_form_for :facebook_gift, FacebookGift.new, :url => > facebook_gifts_path do |f| %> > <%> @gift_catalog = GiftCatalog.find(:all, :order => "name").map { |gc| > [gc.resource.file_name, gc.id]} > f.text select_tag(:gift_catalog_id, > options_for_select(@gift_catalog), :onchange => > "update_gift_display(this.getValue(), ''resource'');") > %> > //more code here > <%end%> > > I have some javascript on the same page: > > <script> > function update_gift_display(gc_id, update_widget) { > uri = GiftCatalog.find(gc_id).resource.resource_uri > $(update_widget).setTextValue(uri) > } > </script> > > So what I''m trying to achieve is for user to select a gift_catalog_id, > then I will get the url to > the actual gift (which is linked to gift_catalog). But GiftCatalog is > not available in the javascript function. > I feel that I''m not on the right track for this. Any suggestion would > be greatly appreciated. > > Zhao > > On Thu, Sep 11, 2008 at 5:30 AM, Mike Mangino > <mmangino at elevatedrails.com> wrote: >> Are you calling form.select_tag? That won''t work. select_tag is not >> a method >> on the form builder (this is true any time you use form_for in rails) >> >> You can do form.text select_tag... to wrap a normal select inside a >> facebook >> form. >> >> Mike >> On Sep 11, 2008, at 1:45 AM, Zhao Lu wrote: >> >>> Hello Everyone, >>> >>> I''m using a facebook_form_for which is bound to a model. In the >>> form >>> I have a form.select which is populated with an array of the names >>> of >>> images. >>> Whenever I change the selection I''d like to display the image on the >>> same page. I tried to change form.select to select_tag but that >>> doesn''t seem to play well with facebook_form_for. I''m pretty >>> confused >>> as to how to approach this. Any suggestion would be appreciated. >>> >>> -- >>> Zhao >>> _______________________________________________ >>> Facebooker-talk mailing list >>> Facebooker-talk at rubyforge.org >>> http://rubyforge.org/mailman/listinfo/facebooker-talk >> >> -- >> Mike Mangino >> http://www.elevatedrails.com >> >> >> >> > > > > -- > Zhao-- Mike Mangino http://www.elevatedrails.com
Yep I was mixing them without thinking about it! I guess I''m getting confused reading on Prototype/Facebooker all at once. I think I can go either way, AJax or store it somewhere. It sounds storing it in an array as you have suggested is easier. But I''ll have to store it in a ruby variable and I have to access to it (or at least I don''t know how to access it) from Javascript. In case I''m not being articulate enough, this is what I mean: I create this array in my form: @rs_array = GiftCatalog.find(:all, :order => "name").map { |gc| [gc.resource.resource_uri, gc.id]} Then in my javascript function I pass in gc.id, cause that''s what''s being selected in the drop-down. Now how do you get the resource_uri that''s corresponding to the gc.id of @rs_array? Zhao On Thu, Sep 11, 2008 at 2:13 PM, Mike Mangino <mmangino at elevatedrails.com> wrote:> I think you''re mixing javascript and ruby: > > uri = GiftCatalog.find(gc_id).resource.resource_uri > > That''s Ruby, right? > > You''ll need to either use ajax to get that data or store it in the page > somewhere. Maybe you could keep an array that maps between gc_id values and > their URLs. > > I often will prototype my ajax stuff outside of Facebook. It''s easier to > debug that way. Once it''s working I convert it to Facebook. > > Mike > On Sep 11, 2008, at 3:06 PM, Zhao Lu wrote: > >> Thanks for your answer Mike. I was calling select_tag by itself >> without the wrapping, >> which is indeed what I need to do. Now I have passed that having some >> problem with >> getting hold of a ruby class I defined from javascript. I can''t seem >> to find an example >> online. Here''s my code: >> >> <p id="resource" > </p> >> <% facebook_form_for :facebook_gift, FacebookGift.new, :url => >> facebook_gifts_path do |f| %> >> <%>> @gift_catalog = GiftCatalog.find(:all, :order => "name").map { |gc| >> [gc.resource.file_name, gc.id]} >> f.text select_tag(:gift_catalog_id, >> options_for_select(@gift_catalog), :onchange => >> "update_gift_display(this.getValue(), ''resource'');") >> %> >> //more code here >> <%end%> >> >> I have some javascript on the same page: >> >> <script> >> function update_gift_display(gc_id, update_widget) { >> uri = GiftCatalog.find(gc_id).resource.resource_uri >> $(update_widget).setTextValue(uri) >> } >> </script> >> >> So what I''m trying to achieve is for user to select a gift_catalog_id, >> then I will get the url to >> the actual gift (which is linked to gift_catalog). But GiftCatalog is >> not available in the javascript function. >> I feel that I''m not on the right track for this. Any suggestion would >> be greatly appreciated. >> >> Zhao >> >> On Thu, Sep 11, 2008 at 5:30 AM, Mike Mangino >> <mmangino at elevatedrails.com> wrote: >>> >>> Are you calling form.select_tag? That won''t work. select_tag is not a >>> method >>> on the form builder (this is true any time you use form_for in rails) >>> >>> You can do form.text select_tag... to wrap a normal select inside a >>> facebook >>> form. >>> >>> Mike >>> On Sep 11, 2008, at 1:45 AM, Zhao Lu wrote: >>> >>>> Hello Everyone, >>>> >>>> I''m using a facebook_form_for which is bound to a model. In the form >>>> I have a form.select which is populated with an array of the names of >>>> images. >>>> Whenever I change the selection I''d like to display the image on the >>>> same page. I tried to change form.select to select_tag but that >>>> doesn''t seem to play well with facebook_form_for. I''m pretty confused >>>> as to how to approach this. Any suggestion would be appreciated. >>>> >>>> -- >>>> Zhao >>>> _______________________________________________ >>>> Facebooker-talk mailing list >>>> Facebooker-talk at rubyforge.org >>>> http://rubyforge.org/mailman/listinfo/facebooker-talk >>> >>> -- >>> Mike Mangino >>> http://www.elevatedrails.com >>> >>> >>> >>> >> >> >> >> -- >> Zhao > > -- > Mike Mangino > http://www.elevatedrails.com > > > >-- Zhao
You''ll actually have to store it in a javascript variable. You can do something like: In your controller: @gift_image_hash = {} GiftCatalog.find(:all).each {|g| @gift_image_hash[g.id] = g.resource.resource_url} In your view: <script> var gift_mapping = <%= @gift_image_hash.to_json %>; </script> Then, your function can just be: function update_gift_display(gc_id, update_widget) { $(update_widget).setTextValue(gift_mapping[gc_id]); } You''ll probably need to adjust the setTextValue call to something else if you want to change an image src, but that''s the general idea. Mike On Sep 11, 2008, at 5:47 PM, Zhao Lu wrote:> Yep I was mixing them without thinking about it! I guess I''m getting > confused reading on Prototype/Facebooker all at once. I think I can > go either way, AJax or store it somewhere. It sounds storing it in an > array as you have suggested is easier. But I''ll have to store it in a > ruby variable and I have to access to it (or at least I don''t know how > to access it) from Javascript. > > In case I''m not being articulate enough, this is what I mean: > I create this array in my form: > @rs_array = GiftCatalog.find(:all, :order => "name").map { |gc| > [gc.resource.resource_uri, gc.id]} > > Then in my javascript function I pass in gc.id, cause that''s what''s > being selected in the drop-down. > Now how do you get the resource_uri that''s corresponding to the gc.id > of @rs_array? > > Zhao > > On Thu, Sep 11, 2008 at 2:13 PM, Mike Mangino > <mmangino at elevatedrails.com> wrote: >> I think you''re mixing javascript and ruby: >> >> uri = GiftCatalog.find(gc_id).resource.resource_uri >> >> That''s Ruby, right? >> >> You''ll need to either use ajax to get that data or store it in the >> page >> somewhere. Maybe you could keep an array that maps between gc_id >> values and >> their URLs. >> >> I often will prototype my ajax stuff outside of Facebook. It''s >> easier to >> debug that way. Once it''s working I convert it to Facebook. >> >> Mike >> On Sep 11, 2008, at 3:06 PM, Zhao Lu wrote: >> >>> Thanks for your answer Mike. I was calling select_tag by itself >>> without the wrapping, >>> which is indeed what I need to do. Now I have passed that having >>> some >>> problem with >>> getting hold of a ruby class I defined from javascript. I can''t >>> seem >>> to find an example >>> online. Here''s my code: >>> >>> <p id="resource" > </p> >>> <% facebook_form_for :facebook_gift, FacebookGift.new, :url => >>> facebook_gifts_path do |f| %> >>> <%>>> @gift_catalog = GiftCatalog.find(:all, :order => "name").map { |gc| >>> [gc.resource.file_name, gc.id]} >>> f.text select_tag(:gift_catalog_id, >>> options_for_select(@gift_catalog), :onchange => >>> "update_gift_display(this.getValue(), ''resource'');") >>> %> >>> //more code here >>> <%end%> >>> >>> I have some javascript on the same page: >>> >>> <script> >>> function update_gift_display(gc_id, update_widget) { >>> uri = GiftCatalog.find(gc_id).resource.resource_uri >>> $(update_widget).setTextValue(uri) >>> } >>> </script> >>> >>> So what I''m trying to achieve is for user to select a >>> gift_catalog_id, >>> then I will get the url to >>> the actual gift (which is linked to gift_catalog). But >>> GiftCatalog is >>> not available in the javascript function. >>> I feel that I''m not on the right track for this. Any suggestion >>> would >>> be greatly appreciated. >>> >>> Zhao >>> >>> On Thu, Sep 11, 2008 at 5:30 AM, Mike Mangino >>> <mmangino at elevatedrails.com> wrote: >>>> >>>> Are you calling form.select_tag? That won''t work. select_tag is >>>> not a >>>> method >>>> on the form builder (this is true any time you use form_for in >>>> rails) >>>> >>>> You can do form.text select_tag... to wrap a normal select inside a >>>> facebook >>>> form. >>>> >>>> Mike >>>> On Sep 11, 2008, at 1:45 AM, Zhao Lu wrote: >>>> >>>>> Hello Everyone, >>>>> >>>>> I''m using a facebook_form_for which is bound to a model. In the >>>>> form >>>>> I have a form.select which is populated with an array of the >>>>> names of >>>>> images. >>>>> Whenever I change the selection I''d like to display the image on >>>>> the >>>>> same page. I tried to change form.select to select_tag but that >>>>> doesn''t seem to play well with facebook_form_for. I''m pretty >>>>> confused >>>>> as to how to approach this. Any suggestion would be appreciated. >>>>> >>>>> -- >>>>> Zhao >>>>> _______________________________________________ >>>>> Facebooker-talk mailing list >>>>> Facebooker-talk at rubyforge.org >>>>> http://rubyforge.org/mailman/listinfo/facebooker-talk >>>> >>>> -- >>>> Mike Mangino >>>> http://www.elevatedrails.com >>>> >>>> >>>> >>>> >>> >>> >>> >>> -- >>> Zhao >> >> -- >> Mike Mangino >> http://www.elevatedrails.com >> >> >> >> > > > > -- > Zhao-- Mike Mangino http://www.elevatedrails.com
That''s exactly what I was looking for. Thanks so much! On Thu, Sep 11, 2008 at 3:20 PM, Mike Mangino <mmangino at elevatedrails.com> wrote:> You''ll actually have to store it in a javascript variable. You can do > something like: > > In your controller: > > @gift_image_hash = {} > GiftCatalog.find(:all).each {|g| @gift_image_hash[g.id] > g.resource.resource_url} > > In your view: > > <script> > var gift_mapping = <%= @gift_image_hash.to_json %>; > </script> > > > Then, your function can just be: > function update_gift_display(gc_id, update_widget) { > $(update_widget).setTextValue(gift_mapping[gc_id]); > } > > You''ll probably need to adjust the setTextValue call to something else if > you want to change an image src, but that''s the general idea. > > Mike > > On Sep 11, 2008, at 5:47 PM, Zhao Lu wrote: > >> Yep I was mixing them without thinking about it! I guess I''m getting >> confused reading on Prototype/Facebooker all at once. I think I can >> go either way, AJax or store it somewhere. It sounds storing it in an >> array as you have suggested is easier. But I''ll have to store it in a >> ruby variable and I have to access to it (or at least I don''t know how >> to access it) from Javascript. >> >> In case I''m not being articulate enough, this is what I mean: >> I create this array in my form: >> @rs_array = GiftCatalog.find(:all, :order => "name").map { |gc| >> [gc.resource.resource_uri, gc.id]} >> >> Then in my javascript function I pass in gc.id, cause that''s what''s >> being selected in the drop-down. >> Now how do you get the resource_uri that''s corresponding to the gc.id >> of @rs_array? >> >> Zhao >> >> On Thu, Sep 11, 2008 at 2:13 PM, Mike Mangino >> <mmangino at elevatedrails.com> wrote: >>> >>> I think you''re mixing javascript and ruby: >>> >>> uri = GiftCatalog.find(gc_id).resource.resource_uri >>> >>> That''s Ruby, right? >>> >>> You''ll need to either use ajax to get that data or store it in the page >>> somewhere. Maybe you could keep an array that maps between gc_id values >>> and >>> their URLs. >>> >>> I often will prototype my ajax stuff outside of Facebook. It''s easier to >>> debug that way. Once it''s working I convert it to Facebook. >>> >>> Mike >>> On Sep 11, 2008, at 3:06 PM, Zhao Lu wrote: >>> >>>> Thanks for your answer Mike. I was calling select_tag by itself >>>> without the wrapping, >>>> which is indeed what I need to do. Now I have passed that having some >>>> problem with >>>> getting hold of a ruby class I defined from javascript. I can''t seem >>>> to find an example >>>> online. Here''s my code: >>>> >>>> <p id="resource" > </p> >>>> <% facebook_form_for :facebook_gift, FacebookGift.new, :url => >>>> facebook_gifts_path do |f| %> >>>> <%>>>> @gift_catalog = GiftCatalog.find(:all, :order => "name").map { |gc| >>>> [gc.resource.file_name, gc.id]} >>>> f.text select_tag(:gift_catalog_id, >>>> options_for_select(@gift_catalog), :onchange => >>>> "update_gift_display(this.getValue(), ''resource'');") >>>> %> >>>> //more code here >>>> <%end%> >>>> >>>> I have some javascript on the same page: >>>> >>>> <script> >>>> function update_gift_display(gc_id, update_widget) { >>>> uri = GiftCatalog.find(gc_id).resource.resource_uri >>>> $(update_widget).setTextValue(uri) >>>> } >>>> </script> >>>> >>>> So what I''m trying to achieve is for user to select a gift_catalog_id, >>>> then I will get the url to >>>> the actual gift (which is linked to gift_catalog). But GiftCatalog is >>>> not available in the javascript function. >>>> I feel that I''m not on the right track for this. Any suggestion would >>>> be greatly appreciated. >>>> >>>> Zhao >>>> >>>> On Thu, Sep 11, 2008 at 5:30 AM, Mike Mangino >>>> <mmangino at elevatedrails.com> wrote: >>>>> >>>>> Are you calling form.select_tag? That won''t work. select_tag is not a >>>>> method >>>>> on the form builder (this is true any time you use form_for in rails) >>>>> >>>>> You can do form.text select_tag... to wrap a normal select inside a >>>>> facebook >>>>> form. >>>>> >>>>> Mike >>>>> On Sep 11, 2008, at 1:45 AM, Zhao Lu wrote: >>>>> >>>>>> Hello Everyone, >>>>>> >>>>>> I''m using a facebook_form_for which is bound to a model. In the form >>>>>> I have a form.select which is populated with an array of the names of >>>>>> images. >>>>>> Whenever I change the selection I''d like to display the image on the >>>>>> same page. I tried to change form.select to select_tag but that >>>>>> doesn''t seem to play well with facebook_form_for. I''m pretty confused >>>>>> as to how to approach this. Any suggestion would be appreciated. >>>>>> >>>>>> -- >>>>>> Zhao >>>>>> _______________________________________________ >>>>>> Facebooker-talk mailing list >>>>>> Facebooker-talk at rubyforge.org >>>>>> http://rubyforge.org/mailman/listinfo/facebooker-talk >>>>> >>>>> -- >>>>> Mike Mangino >>>>> http://www.elevatedrails.com >>>>> >>>>> >>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Zhao >>> >>> -- >>> Mike Mangino >>> http://www.elevatedrails.com >>> >>> >>> >>> >> >> >> >> -- >> Zhao > > -- > Mike Mangino > http://www.elevatedrails.com > > > >-- Zhao