Guys, I have a partial for a form here:
<% form_remote_tag(:controller => “posts”, :action => “create”) do %>
<%= label_tag(:title, “Title”) %>
<%= text_area_tag(:title, nil) %>
<%= label_tag(:body, “Description”) %>
<%= text_area_tag(:body, nil) %>
<%= submit_tag(“Post”) %>
<% end %>
So I want to have a drop down where people can select what kind of
update this is before they post it,
something like: general or Job etc.
On an example code I found this;
<%= f.label :group_ids, "Group" %>
<%= f.collection_select :group_ids, Group.all(:order => "name
ASC"), :id, :name %>
Wich basically renders a drop down menu with all “Groups”
Im my case I need to do something like this:
<%= f.label :update_type, "Post" %>
<%= f.collection_select :update_type, Post.all(:order => "name
ASC"), :id, :name %>
except, I dont have a local variable f on my partial on the first
chuck of code above.
so what is the syntax to change my last last piece of code to work
with the partial above so I
can effectively render a drop down that will let me select the
update_type ?
any help will be great.
Oliver.
collection_select is build around an object, that’s why in the example
they
use f.collection_select, but you are using helpers with tag sufix, you
don’t
need an object in order to use those kind of helpers, so… maybe you
should
use select_tag:
select_tag(name, option_tags = nil, options = {})
you pass it a option_tags collection, you can get it from:
options_for_select(container, selected = nil)
you pass it an array of options or a hash, and if you want an option to
be
selected as default… then you pass it also
your example should look something like:
*select_tag(‘name’, options_for_select(*Post.all(:order => “name
ASC”).collect {|p| [p.name, p.id]} ))
2010/8/27 oliver torres [email protected]
oliver torres wrote:
Guys, I have a partial for a form here:
[…]
So I want to have a drop down where people can select what kind of
update this is before they post it,
something like: general or Job etc.
On an example code I found this;
<%= f.label :group_ids, "Group" %>
<%= f.collection_select :group_ids, Group.all(:order => "name
ASC"), :id, :name %>
Wich basically renders a drop down menu with all “Groups”
Im my case I need to do something like this:
<%= f.label :update_type, "Post" %>
<%= f.collection_select :update_type, Post.all(:order => "name
ASC"), :id, :name %>
except, I dont have a local variable f on my partial on the first
chuck of code above.
Right, because form*_tag doesn’t create a FormBuilder object.
so what is the syntax to change my last last piece of code to work
with the partial above so I
can effectively render a drop down that will let me select the
update_type ?
If you had read the docs for collection_select, you would have found
that it takes one more argument when no FormBuilder is involved. If
that syntax doesn’t work in your particular case, select_tag (and
perhaps options_from_collection_for_select ) will.
Best,
Marnen Laibow-Koser
http://www.marnen.org
[email protected]