link_to_remote avec with

0 views
Skip to first unread message

pestak

unread,
Dec 23, 2009, 8:29:05 AM12/23/09
to Railsfrance
Bonjour,

J'ai une interface de saisie d'activité de saisie qui est découpé en 2
parties matin et après midi.
Pour ce faire j'utilise 2 objets :
@saisie_matin = Saisie.new
@saisie_aprem = Saisie.new

Dans mon formulaire, j'ai un lien qui doit permettre de copier la
saisie du matin dans l'après midi.
J'essaye de faire passer les valeurs de @saisie_matin à l'aide de with
mais je ne récupère pas les valeurs.
J'obtiens cette erreur :
Couldn't find Activite without an ID
...
app/controllers/saisies_controller.rb:1309:in `identique_aprem'

Comment dois-je procéder?
Merci d'avance
__________________________________________________________
Code source controleur :

# ajax affiche div tableau_saisie_droite suivant la saisie du matin
def identique_aprem
#valorisation de la variable saisie aprem avec les valeurs du
matin
@saisie_aprem = Saisie.new
@saisie_aprem.activite_id = params['activite_id']
@saisie_aprem.fiche_id = params['fiche_id']
@saisie_aprem.demandeur_id = params['demandeur_id']
flash[:erreur] = "#"+params['activite_id'].to_s

@activites = Activite.find(:all, :conditions =>
"actif=true", :order=>"nom ASC").map {|p| [p.nom, p.id]}
@activite_saisie = Activite.find(@saisie_aprem.activite_id)
if @activite_saisie.experimentale
#valorisation liste déroulante
...
end
render :partial => "identique_aprem", :layout => false
end

________________________________________________
Code source de ma page :

<%= form_tag :controller=>'saisies', :action=>"create_individuel" %>
<div id="ligne_commande">
<table>
<tr>
<td width="150px">Actions :</td>
<td width="350px"><%= link_to_remote 'Saisie identique à la
veille', :update=>'tableau_saisie', :url=>
{:action=>'identique_veille', :id=>@personne.id} %></td>
<td width="250px"><%= link_to_remote 'Saisie identique l
\'après midi', :update=>'tableau_saisie_droite', :url=>
{:action=>'identique_aprem', :with => " 'activite_id=' + $
('saisie_matin_activite_id') + '&fiche_id=' + $
('saisie_matin_fiche_id') + '&demandeur_id=' + $
('saisie_matin_demandeur_id') " } %></td>
</tr>
</table>
</div>
<br />
<b>Personne : <%= @personne.prenom %> <%= @personne.nom %></b>
<br /><br />
<input id="saisie_matin_personne_id" name="saisie_matin
[personne_id]" type="hidden" value="<%= @personne.id %>" />
<input id="saisie_aprem_personne_id" name="saisie_aprem
[personne_id]" type="hidden" value="<%= @personne.id %>" />
<div id="tableau_saisie">
<div id="tableau_saisie_gauche">
<table>
<tr>
<td width="115px">Date</td>
<td width="280px"><%= calendar_date_select_tag "saisie_matin
[date_saisie]","", :valid_date_check => "date <= (new Date()).stripTime
()" %></td>
</tr>
<tr>
<td><input id="saisie_matin_matin_aprem" name="saisie_matin
[matin_aprem]" type="hidden" value="1" /></td>
<td class="soustitre">Matin</td>
</tr>
<tr>
<td>Activités</td>
<td><%= select("saisie_matin","activite_id", @activites,
{:selected => nil , :prompt => "Choisissez l'activité"}) %>&nbsp;<span
id="description_activite_matin"></span></td>
</tr>
</table>
<div id="maj_fiche_matin"></div>
<table>
<tr>
<td width="115px">Commentaire</td>
<td width="280px"><%= text_area "saisie_matin", :commentaire
%></td>
</tr>
<tr>
<td>Heure suppl.</td>
<td><%= text_field "saisie_matin", :heuresup %></td>
</tr>
<tr>
<td>Identique date</td>
<td><%= calendar_date_select_tag "date_matin" %></td>
</tr>
</table>
</div>
<div id="tableau_saisie_droite">
<table>
<tr>
<td width="115px">&nbsp;</td>
<td width="280px"><input id="saisie_aprem_date_saisie"
name="saisie_aprem[date_saisie]" type="hidden" value="<%= Date.today
%>" /></td>
</tr>
<tr>
<td><input id="saisie_aprem_matin_aprem" name="saisie_aprem
[matin_aprem]" type="hidden" value="2" /></td>
<td class="soustitre">Après Midi</td>
</tr>
<tr>
<td>Activités</td>
<td><%= select("saisie_aprem","activite_id", @activites,
{:selected => nil , :prompt => "Choisissez l'activité"}) %>&nbsp;<span
id="description_activite_aprem"></span></td>
</tr>
</table>
<div id="maj_fiche_aprem"></div>
<table>
<tr>
<td width="115px">Commentaire</td>
<td width="280px"><%= text_area "saisie_aprem", :commentaire
%></td>
</tr>
<tr>
<td>Heure suppl.</td>
<td><%= text_field "saisie_aprem", :heuresup %></td>
</tr>
<tr>
<td>Identique date</td>
<td><%= calendar_date_select_tag "date_aprem" %></td>
</tr>
</table>
</div>
</div>
<br /><br />
<div style="text-align:center;">
<%= submit_tag "Valider", :class => 'bouton' %>&nbsp;&nbsp;&nbsp;<
%= link_to 'Annuler', saisies_path %>
</div>
</form>
<%= observe_field 'saisie_matin_activite_id',
:url=>{:action=>'affiche_fiche_matin'},
:update=>'maj_fiche_matin',
:with => "'id_activite=' + escape(value)"
%>
<%= observe_field 'saisie_matin_activite_id',
:url=>{:action=>'affiche_description_activite_matin'},
:update=>'description_activite_matin',
:with => "'id_activite=' + escape(value)"
%>
<%= observe_field 'saisie_aprem_activite_id',
:url=>{:action=>'affiche_fiche_aprem'},
:update=>'maj_fiche_aprem',
:with => "'id_activite=' + escape(value)"
%>
<%= observe_field 'saisie_aprem_activite_id',
:url=>{:action=>'affiche_description_activite_aprem'},
:update=>'description_activite_aprem',
:with => "'id_activite=' + escape(value)"
%>

Adrien Coquio

unread,
Dec 24, 2009, 3:36:51 PM12/24/09
to Railsfrance
Je n'ai pas étudié en détail ton code mais je pense qu'il est plus
logique de faire ca en javascript :
Plutot que de passer par une requete ajax et d'utiliser active record,
il serait, à mon avis, beaucoup plus simple de copier le contenu des
champs que tu veux vers les champs que tu veux avec une fonction
javascript, tu crées ensuite un lien vers cette fonction, c'est très
simple à mettre en place (cf libraire prototype en javascript) et
t'éviteras une requête ajax inutile.
Sinon un conseil, lorsque tu rencontres un problème de ce type,
utilise le debugger (ruby-debug) pour voir d'où vient l'erreur.

adrien

Reply all
Reply to author
Forward
0 new messages