Consider this scenario in relation to a blog posting application.
a form has been loaded for a user to create a new blog entry
attributes are: title, content, category and sub-category
-user goes ahead and fills in text to the title and content
attributes
user selects an option from the drop down (select) box
representing the ‘category’ attribute. Possible values are:
“politics”, “finance” and “entertainment”.
upon selecting a category value, the “sub-category” attribute’s
drop down (select) should be populated.
For example, if a user selects “politics”, the sub-categories that
can be selected are: “US,AU,NZ” whilst when “finance” is selected,
the sub-categories that can be selected are: “mining”, “bonds” and
“interest rates” and when “entertainment” is selected as a category,
the sub-categories that can be selected are: “sports”, “music” and
“theatre”.
I know that the scenario above would have Ajax as its’ solution.
Roughly, I figure it would be the case that the onChange javascript
attribute is to be used on the category select box. When the value
changes, an Ajax request is made to the necessary controller and the
controller will return the sub-category values of the selected
category.
Has anyone got a link to a good tute I can look at? I read the rails
books i have but I can’t find anything similar to this.
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?
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.
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.
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.
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.
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).
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 )” ).
I’m pretty sure that #blank? is supposed to be used to check if a
parameter is present or, if present, is blank. I think the method
you’re looking for here is #empty?
unless @sub_categories.empty?
do something, :here => :now
end
–wpd
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.