[AJAX etc.] AssociationHelper

Bonjour tout le monde,

J’aimerais bien pouvoir utiliser cet assistant :

http://wiki.rubyonrails.com/rails/pages/AssociationHelper

hélas, j’ai beau lire, relire et re-relire, je n’arrive Ã
rien (ou presque).

C’est moi ou les instructions disséminées dans le code sont
un rien parcellaires et largement empreintes de sous-entendu ?

Ou alors, il en manque mais je n’ai rien trouvé d’autre relatif
à ceci sur le net.

Bref, pour résumer, j’ai :

créé une base Postgresql “asso_development” qui essaie de suivre les
exemples
plus ou moins suggérés dans la “doc” et contenant deux tables :

asso_development=# \d projects
Table «public.projects»
Colonne | Type | Modificateurs
------------±--------±---------------------------------------------------------
id | integer | not null default
nextval(‘public.projects_id_seq’::text)
project | text |
manager_id | integer |

asso_development=# \d managers
Table «public.managers»
Colonne | Type | Modificateurs
---------±--------±---------------------------------------------------------
id | integer | not null default
nextval(‘public.managers_id_seq’::text)
manager | text |

asso_development=#

peuplées de quelques articles :

asso_development=# SELECT * from projects;
id | project | manager_id
----±---------±-----------
1 | Projet 1 | 2
2 | Projet 2 | 3
3 | Projet 3 | 1
4 | Projet 4 | 2
(4 lignes)

asso_development=# SELECT * from managers;
id | manager
----±--------
1 | Riri
2 | Fifi
3 | Loulou
(3 lignes)

asso_development=#

lancé la commande

rails asso

-> aucune erreur retournée.

adapté le config/database.yml comme çavabien

copié

ajax_support.rb dans lib/
association_helper.rb dans lib/
association-helper.js dans public/javascripts/

lancé

script/generate model Project
script/generate controller Project
script/generate model Manager
script/generate controller Manager

créé un app/views/layouts/application.rhtml contenant

<%= javascript_include_tag 'prototype', 'association-helper' %> <%= @content_for_layout %>

dans les deux contrôleurs :

helper :association

dans la suite des explications, il est dit :

In the controllers queried for candidate associate objects, you need

to provide an action method that handles the respective requests.

You can implement them manually, of course.

For a large number of cases this will not be necessary, hopefully,

when you use RailsExtensions?::AjaxSupport.define_search_action.

ce qui est un peu nébuleux pour moi. :S

mais comme j’ai mis

require ‘ajax_support’

ActionController::Base.class_eval do
include RailsExtension::AjaxSupport
end

à la fin de mon config/environment.rb ça devrait coller.

les contrôleurs

projects_controller.rb :
class ProjectController < ApplicationController
scaffold :project
helper :association
define_search_action :ajax, Project, ‘%manager%’, :limit =>
10, :select_size => 10

def show
    @project = Project.find(params[:id])
end

end

manager_controller.rb :
class ManagerController < ApplicationController
scaffold :manager
helper :association
end

les modèles

manager.rb :
class Manager < ActiveRecord::Base
has_many :projects
end

project.rb :
class Project < ActiveRecord::Base
belongs_to :manager
end

pour les versions, lancement de script/server :

About your applicationâ??s environment

Ruby version 1.8.4 (i486-linux)
RubyGems version 0.8.11
Rails version 1.1.2
Active Record version 1.14.2
Action Pack version 1.12.1
Action Web Service version 1.1.2
Action Mailer version 1.2.1
Active Support version 1.3.1
Application root /home/joel/rails/asso
Environment development
Database adapter postgresql

(Sous Ubuntu Dapper)

Le scaffolding fonctionne parfaitement avec les données présentes
dans la base.

dans app/views/project/show.rhtml, associé à l’action du contrôleur

<% for column in Project.content_columns %>

<%= column.human_name %>: <%=h @project.send(column.name) %>

<% end %>

<%= link_to ‘Edit’, :action => ‘edit’, :id => @project %> |
<%= link_to ‘Back’, :action => ‘list’ %>

si j’y ajoute la ligne suivante

<%= belongs_to_field(‘project’, ‘manager’) { |it| it.manager if it } %>

Ã? partir de là , si j’entre l’URL http://localhost:3000/project/show/1
j’obtiens bien en sus de

Project: Projet 1
Edit|Back

un champ de saisie texte contenant la valeur ‘Fifi’, MAIS quand je
clique
dessus, j’ai droit Ã

Unknown action
No action responded to ajax

Qu’est-ce que j’ai loupé et où ?

Source de la page :

Project: Projet 1

Edit |
Back

//<![CDATA[ new Form.Element.Observer('project_manager_popup_query', 0.5, function(element, value) {new Ajax.Updater('project_manager_popup_list', '/manager/ajax', {asynchronous:true, evalScripts:true, parameters:'query=' + escape(value)})}) //]]> </script> </p> </body> </html> <p>Désolé si j’ai été long, voire brouillon, mais j’ai essayé d’être aussi<br> complet que possible.</p> <p>Merci d’avance pour les éventuels tuyaux, je suis perdu. <img src="/images/emoji/twitter/wink.png?v=6" title=":wink:" class="emoji" alt=":wink:"></p>

Bonjour Joel

ça ne résoudra pas ton problème précis avec ce helper mais peut être que
cette page t’intéressera quand même :

www.ajaxscaffold.com/
et en particulier: www.ajaxscaffold.com/associations_demo/

bon courage

Thibaut

Le lundi 15 mai 2006 à 09:22 +0200, Thibaut Barrère a écrit :

ça ne résoudra pas ton problème précis avec ce helper mais peut être
que cette page t’intéressera quand même :

www.ajaxscaffold.com/
et en particulier: www.ajaxscaffold.com/associations_demo/

En effet mais c’est bigrement intéressant quand même.

Merci pour le tuyau, je vais aussi explorer cette piste.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs