Forum: Italian Ruby user group I need help.

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.
Msan M. (Guest)
on 2009-02-17 11:34
(Received via mailing list)
Avevo gia' posto il problema ma sono in stand by da alcuni giorni.
Purtroppo e' solo da alcune settimane che sto facendo conoscenza con
rails e molte cose mi sfuggono, soprattutto troppi concetti tutti
assieme mi hanno mandato in confusione.
Ho tre tabelle settori, categorie e utenti.
Settori e categorie sono in relazione uno a molti, categorie e utenti
molti a molti.
Vorrei fare in modo che all'inserimento di un nuovo utente abbia la
possibilita' di selezionare un settore in base al quale mi viene
fornita la lista delle relative categorie.
Scelta la categoria o le categorie, viene creato il nuovo utente,
oppure aggiornato, e gli viene assegnata la categoria o le categorie
di appartenenza.
Sono riuscito ad arrivare fino al punto in cui posso selezionare il
settore e mi vengono mostrate le categorie di appartenenza ma e'
codice fatto con i piedi, comunque:

nelle view di utente ho il partial dei campi del form relativi
all'utente, es:


<p>
    <%= f.label :"nome e cognome" %><br />
    <%= f.text_field :nome %>
</p>
<p>
    <%= f.label :note %><br />
    <%= f.text_area :notes %>
</p>
<%= render :partial => "sector_categories" %>

il partial sector_categories contiene:

<p>
  <%= collection_select "category", :sector_id, @sectors, :id, :name,
:prompt => "seleziona il settore" %>
</p>
<p>
<div id="category_container">
</div>
</p>
<%= observe_field :category_sector_id,
          :frequency => 2,
          :update => 'category_container',
          :url => {:action => 'filter_category_in_sector'},
          :with => "'sector_id='+value" %>

l'action filter_category_in_sector fa un
@categories = Category.find_all_by_sector_id(params[:sector_id])
render :layout => false

Ovviamente per tale action devo avere una view, se ho capito bene come
funziona rails, pertanto la view relativa all'action e':
filter_categories_in_sector.html.erb e contiene:

<% for category in @categories %>
  <%= check_box_tag "category", category.id %>
  <%= category.name %>
<% end %>

e qui mi sono fermato.
Non so come fare in modo di assegnare le categorie selezionate
all'utente nel momento in cui ne viene creato uno nuovo oppure viene
aggiornato uno esistente.
Se c'e' qualche anima buona per poterlo fare passo passo gliene sarei
grato almeno posso superare questo stato di stand by.
Paolo M. (Guest)
on 2009-02-18 11:59
Vediamo se ho capito.

In div#category_container ci va l'elenco delle categorie, che sono delle
checkbox. L'utente dell'applicazione deve selezionarne una o più e poi
cliccare il submit per creare l'utente.

Se le checkbox sono dentro al form, saranno inviate a rails anche loro
insieme a tutti gli altri campi. Per verificarlo controlla il log, dove
vedrai anche il loro nome in params[]. Però pare troppo semplice, forse
c'è qualcosa che mi sfugge.

Paolo

Msan M. wrote:
> Avevo gia' posto il problema ma sono in stand by da alcuni giorni.
> Purtroppo e' solo da alcune settimane che sto facendo conoscenza con
> rails e molte cose mi sfuggono, soprattutto troppi concetti tutti
> assieme mi hanno mandato in confusione.
> Ho tre tabelle settori, categorie e utenti.
> Settori e categorie sono in relazione uno a molti, categorie e utenti
> molti a molti.
> Vorrei fare in modo che all'inserimento di un nuovo utente abbia la
> possibilita' di selezionare un settore in base al quale mi viene
> fornita la lista delle relative categorie.
> Scelta la categoria o le categorie, viene creato il nuovo utente,
> oppure aggiornato, e gli viene assegnata la categoria o le categorie
> di appartenenza.
> Sono riuscito ad arrivare fino al punto in cui posso selezionare il
> settore e mi vengono mostrate le categorie di appartenenza ma e'
> codice fatto con i piedi, comunque:
>
> nelle view di utente ho il partial dei campi del form relativi
> all'utente, es:
>
>
> <p>
>     <%= f.label :"nome e cognome" %><br />
>     <%= f.text_field :nome %>
> </p>
> <p>
>     <%= f.label :note %><br />
>     <%= f.text_area :notes %>
> </p>
> <%= render :partial => "sector_categories" %>
>
> il partial sector_categories contiene:
>
> <p>
>   <%= collection_select "category", :sector_id, @sectors, :id, :name,
> :prompt => "seleziona il settore" %>
> </p>
> <p>
> <div id="category_container">
> </div>
> </p>
> <%= observe_field :category_sector_id,
>           :frequency => 2,
>           :update => 'category_container',
>           :url => {:action => 'filter_category_in_sector'},
>           :with => "'sector_id='+value" %>
>
> l'action filter_category_in_sector fa un
> @categories = Category.find_all_by_sector_id(params[:sector_id])
> render :layout => false
>
> Ovviamente per tale action devo avere una view, se ho capito bene come
> funziona rails, pertanto la view relativa all'action e':
> filter_categories_in_sector.html.erb e contiene:
>
> <% for category in @categories %>
>   <%= check_box_tag "category", category.id %>
>   <%= category.name %>
> <% end %>
>
> e qui mi sono fermato.
> Non so come fare in modo di assegnare le categorie selezionate
> all'utente nel momento in cui ne viene creato uno nuovo oppure viene
> aggiornato uno esistente.
> Se c'e' qualche anima buona per poterlo fare passo passo gliene sarei
> grato almeno posso superare questo stato di stand by.
This topic is locked and can not be replied to.