Quiero hacer un proceso de importación a la base desde una carpeta que
tiene archivos. Para seleccionar la carpeta quiero elegir un objeto del
modelo:
Location (id, path)
que tiene como campos el camino en el filesystem. También tengo que
elegir otro valor más de otro objeto, que se llama Language (two_letter,
name).
Entonces voy a la vista del controlador de import y pongo:
<% form_tag('/admin/import') do -%>
<%=
@locations = Location.find(:all,:include => {:version => :application})
select_tag(:id,
options_from_collection_for_select(@locations, :id, :path))
%>
<%=
@languages = Language.find(:all)
select_tag(:id,
options_from_collection_for_select(@languages, :two_letter, :name))
%>
<% end -%>
*Tiene* que haber una manera más fácil, ¿no?
Gracias, Eduardo.
PD: En realidad el Location belongs_to Version y este belongs_to
Application y tendría que mostrar algo en el select como
{APPLICATION.NAME}{VERSION.NAME}{PATH}" Pero si hay el select hay que
armarlo siempre así, a a pedal, bueno, ese detalle no calienta mucho.
class Location < ActiveRecord::Base
belongs_to :version
named_scope :with_app_path, :include => {:version => :application}
def app_path
"#{version.app_path}/#{path}"
end
end
class Version < ActiveRecord::Base
belongs_to :application
def app_path
"#{application.name}/#{name}"
end
end
<% form_tag('/admin/import') do -%>
<%= collection_select(:data, :location_id, Location.with_app_path.all,
:id, :app_path, {:prompt => true}) %>
<%= collection_select(:data, :language_two_letter, Language.all,
:two_letter, :name, {:prompt => true}) %>
<% end -%>
Y en el controller accedés a los datos con params[:data][:location_id]
y params[:data][:language_two_letter].
No lo probé, pero en base a la info que ponés en el mail, creo que
esto puede ser mejor. No sé si es más fácil, pero creo que es más
"limpia".
Suerte!
Diego
2010/8/15 Eduardo Trápani <etra...@gmail.com>:
> --
> Grupo de Usuarios Ruby del Uruguay - http://groups.google.com/group/ruguy
> Anular suscripción - ruguy-un...@googlegroups.com
>