hello, guys,

I read the docs for collection_select and by giving it
' {:include_blank => true}',
an empty value will be generated and placed before all other select
options.

Here's what I did only in my view:

--------------------------------- Start
------------------------------------
                     ...

 <p>
    <%= f.label "category_id" %> <br />
    <%= collection_select(:part,
            'category_id',
            @major_categories,
            :id,
            "name",
            {:include_blank => true}
        )
    %>
</p>

 <span id="subcategory_div">
    <%= # @sub_categories
 %>
</span>

  <p>
    <%= observe_field :part_category_id,
        :url => { :action => :get_subcategories },
        :update => :subcategory_div,
        :with => "'category=' + value"
         %>
  </p>

                   ...
--------------------------------- End
------------------------------------




I do have a problem now. For categories that do not have
subcategories, I don't want the select box to appear for sub
categories (because there's just a box with an empty element at the
moment).

Here is what  I have in my controller:


--------------------------------- Start
------------------------------------
def get_subcategories
    @category = Category.find(params[:category])
    @sub_categories = @category.sub_categories.all

    if @sub_categories  == nil
        puts "nothing"
    else
        puts "Sub CAT exusts"
        require 'pp';
        puts 'eeee'+  pp(@sub_categories) + '...'
    end

   for cat in @sub_categories
    puts "subCat now is " + cat.name
   end
    respond_to do |format|
        format.js {
    #           @sub_categories = @category.all
        }
   end
end
--------------------------------- End
------------------------------------



QUESTION:  How do you test if a given collection of objects is defined
in Ruby?
==========================================================
In the case above in my controller method, it's @sub_categories - how
do I test that there are entries in it?

I have tried using 'nil' by means of  "if  @sub_categories.nil" and
"if  @sub_categories == nil".
I have tried using 'defined?' by means of "if defined?
@sub_categories".

Both do not work.
In the world of perl (where I am from), I could test the variable for
truth  (ie something like "if ( $sub_categories )" ).

Please help, guys!











On Oct 9, 3:29 am, Patrick Doyle <[email protected]> wrote:
> On Wed, Oct 7, 2009 at 5:29 PM, ct9a <[email protected]> wrote:
>
> > thank you. Just had a look at it.
>
> > Whenever you load data into objects in the controller (which gets
> > received by the view), how do you stop the first element from being
> > selected by default when you load the page?
>
> > In relation to the example 
> > inhttp://pullmonkey.com/2008/3/30/dynamic-select-boxes-ruby-on-rails/,
> > assume @artists has the following values: "Jimi Hendrix", "Prince",
> > "Kenny Wayne Shepherd" and "Jonny Lang".
>
> > Now, when the index.html.erb page loads and builds the form, it's the
> > case that the first entry, "Jimi Hendrix" will be preselected.
> > How do you stop that? Would you add an "empty" /nil element? Sorry,
> > I'm from the Perl world and am getting myself into Rails so I might
> > not know the syntax of how to do certain things.
>
> > Thank you
>
> I do something like this in my controller:
>
>     part_numbers = Part.all(:order => "number")
>     @parts = [["None", nil]] + part_numbers.map {|p| p.number}
>
> and something like this in my view:
>
>   <%= select_tag "clone_part",
>       options_for_select(@parts, @clone_part),
>       :onchange => "#{remote_function(:url => new_component_path,
>                             :with => "'clone_part='+$('clone_part').value")}"
>    %>
>
> The first item in my list of part numbers is now "None".  By giving it
> a value of nil, this parameter will not show up in my form if the user
> does not select a part.  If the user does select a part, it gets
> passed to my controller as a parameter to the #new_component_path
> action.
>
> --wpd
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to