Forum: Rails-ES Ayuda con select_tag !

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
0a6d53417bd1681abf74bb1455f1796f?d=identicon&s=25 Santiago Arias (oktubre)
on 2009-03-31 21:10
Hola a todos!

Les comento que tengo el siguiente problema, estoy intentando hacer un
select_tag en un form (Albums) donde tengo una cantidad de objetos para
seleccionar (Artistas). Cada uno de esos objetos  tiene su id y tabla
relacionada,sin embargo puse una de los opciones donde dice "Selecciona
un artista", por lo tanto no es un "Artista" ni tiene una id "valida".
Cuando quiero crear  un album y  dejo seleccionado en la parte de
Artistas la opcion de "Selecciona un artista" me salta un error ya que
"no puede encontrar un artista con esa id ".

No se como validar para que no intente hacer se find cuando tiene el
valor que se le asigna cuando se selecciona la opcion de "selecciona un
artista".

Dejo el codigo del "new.html.erb" y del controlador. Por favor denme una
mano!

Gracias!!



new.html.erb



<h1>New album</h1>

<%= error_messages_for :album %>

<% form_for(@album) do |f| %>
  <p>
    <b>Title</b><br />
    <%= f.text_field :title %>
  </p>

  <p>
    <b>Artist</b><br />
     <%=select_tag('artist_id',options_for_select([["Select One",0]] +
@artist.collect {|art| [art.name,art.id]},@album.artist_id ))%>
   <!-- <%= f.text_field :artist_id %> -->
  </p>

  <p>
    <b>Release date</b><br />
    <%= f.datetime_select :release_date %>
  </p>

  <p>
    <b>Genre</b><br />
    <%= f.text_field :genre %>
  </p>

  <p>
    <b>Created at</b><br />
    <%= f.datetime_select :created_at %>
  </p>

  <p>
    <b>Updated at</b><br />
    <%= f.datetime_select :updated_at %>
  </p>

  <p>
    <b>Feature</b><br />
    <%= f.text_field :feature %>
  </p>

  <p>
    <b>Image path</b><br />
    <%= f.text_field :image_path %>
  </p>

  <p>
    <%= f.submit "Create" %>
  </p>
<% end %>

<%= link_to 'Back', albums_path %>







albums_controller.rb



def create
    artist = Artist.find(params[:artist_id])
     @album = Album.new(params[:album])

  @album.artist = artist

    respond_to do |format|
      if   @album.save
        flash[:notice] = 'Album was successfully created.'
        format.html { redirect_to(@album) }
        format.xml  { render :xml => @album, :status => :created,
:location => @album }
      else

      @artist = Artist.find(:all)
        format.html { render :action => "new" }
        format.xml  { render :xml => @album.errors, :status =>
:unprocessable_entity }
          end

    end
  end
39086eb3d9a1437276d07c08ea0c3821?d=identicon&s=25 Guillermo (Guest)
on 2009-03-31 21:34
(Received via mailing list)
2009/3/31 Santiago Arias <ruby-forum-incoming@andreas-s.net>

>     <%=select_tag('artist_id',options_for_select([["Select One",0]] +


options_for_select puede recibir la opción :include_blank => 'Selecciona
un
artista'


La forma de trabajar con ello es igual que la de resto de parámetros de
modelo.

Añades una validación, el usuario no selecciona artista, el modelo no
valida
y le muestras el mensaje de error como buenamente te guste.

Es como se me ocurre a mi.

Otra opción añadida a la anterior es añadir validación mediante
javascript,
e insisto añadida, no suple la anterior. Esto hace que la navegación sea
más
cómoda ya que no hay que recargar para ver que se te ha olvidado
seleccionar
al artistazo.

Un Saludo.
90ea347c45cdfbc1c5767dd6304d9c10?d=identicon&s=25 Borja Martín (Guest)
on 2009-04-03 16:57
(Received via mailing list)
también comentar que creo que lo suyo sería que en lugar de usar
select_tag
usaras  el helper select para asociar el valor del artista al album
automáticamente ya que realmente no te hace falta instanciarlo:

<%= f.select :artist_id ...

salud!

2009/3/31 Guillermo <guillermo@cientifico.net>
0a6d53417bd1681abf74bb1455f1796f?d=identicon&s=25 Santiago Arias (oktubre)
on 2009-04-03 19:29
Borja Martín wrote:
> también comentar que creo que lo suyo sería que en lugar de usar
> select_tag
> usaras  el helper select para asociar el valor del artista al album
> automáticamente ya que realmente no te hace falta instanciarlo:
>
> <%= f.select :artist_id ...
>
> salud!
>
> 2009/3/31 Guillermo <guillermo@cientifico.net>





Ahora lo pruebo !! Muchas Gracias!!
0a6d53417bd1681abf74bb1455f1796f?d=identicon&s=25 Santiago Arias (oktubre)
on 2009-04-03 19:30
Guillermo wrote:
> 2009/3/31 Santiago Arias <ruby-forum-incoming@andreas-s.net>
>
>>     <%=select_tag('artist_id',options_for_select([["Select One",0]] +
>
>
> options_for_select puede recibir la opción :include_blank => 'Selecciona
> un
> artista'
>
>
> La forma de trabajar con ello es igual que la de resto de parámetros de
> modelo.
>
> Añades una validación, el usuario no selecciona artista, el modelo no
> valida
> y le muestras el mensaje de error como buenamente te guste.
>
> Es como se me ocurre a mi.
>
> Otra opción añadida a la anterior es añadir validación mediante
> javascript,
> e insisto añadida, no suple la anterior. Esto hace que la navegación sea
> más
> cómoda ya que no hay que recargar para ver que se te ha olvidado
> seleccionar
> al artistazo.
>
> Un Saludo.



Muchas Gracias! Solucionaron mi problema!

SAludos y  Gracias!
This topic is locked and can not be replied to.