ticket created on lighthouse: http://datamapper.lighthouseapp.com/projects/20609-datamapper/tickets/1233
On 6 avr, 10:40, Sylvain <[email protected]> wrote: > I've found an hacky way to solve my problem: > > in client class, I've added: > class Client > include DataMapper::Resource > > property :id, Serial > property :prenom, String > property :nom, String > property :telephone, String > property :courriel, String > property :adresse, Text > property :view_only, Boolean > > belongs_to :societe > > def societe_id > societe.id > end > end > > and in the update method of class_controller, I've added: > class ClientsController < ApplicationController # PUT /clients/1 > # PUT /clients/1.xml > def update > @client = Client.get(params[:id]) > ######################### > # <New Stuff> > id = params[:client][:societe_id].to_i > params[:client].delete(:societe_id) > ######################### > # </New Stuff> > > respond_to do |format| > if @client.update(params[:client]) > ######################### > # <New Stuff> > if id != @client.societe.id > @client.societe = nil > new_societe = Societe.get(id) > new_societe.clients << @client > @client.save > end > ######################### > # </New Stuff> > format.html { redirect_to(@client, :notice => 'Client was > successfully updated.') } > format.xml { head :ok } > else > format.html { render :action => "edit" } > format.xml { render :xml => @client.errors, :status > => :unprocessable_entity } > end > end > end > > end > > It's ugly but it works... > I would like to open a ticket for dm-rails but I don't know how... > > On 30 mar, 14:24, Sylvain <[email protected]> wrote: > > > Hi all, > > I'm testing rails3 with Datamapper on a simple project. > > > I've 2 classes : > > class Societe > > include DataMapper::Resource > > > property :id, Serial > > property :nom, String > > property :adresse, Text > > > has n, :clients > > end > > > class Client > > include DataMapper::Resource > > > property :id, Serial > > property :prenom, String > > property :nom, String > > property :telephone, String > > property :courriel, String > > property :adresse, Text > > property :view_only, Boolean > > > belongs_to :societe > > end > > > I created them using rails generate scaffold (except belongs/ has of > > course). > > > I've then have in the folder "view" 5 erb templates per class, and > > especially one (_form) used by "new" and "edit" templates. > > In order to select the society, I have added in client's _form a > > select: > > > <%= form_for(@client) do |f| %> > > <%= f.error_messages %> > > ... > > <div class="field"> > > <%= f.label :societe %><br /> > > <%= f.select(:societe_id, @societes.map{|s| [s.nom, s.id]}) %> > > </div> > > <div class="actions"> > > <%= f.submit %> > > </div> > > <% end %> > > > In creation mode, everything is allright and the customer is created > > with the link to its society > > But when I edit, I have the following error: > > > Showing /home/.../app/views/clients/_form.html.erb where line #30 > > raised: > > > undefined method `societe_id' for #<Client:0xa51833c> > > > Extracted source (around line #30): > > > 27: </div> > > 28: <div class="field"> > > 29: <%= f.label :societe %><br /> > > 30: <%= f.select(:societe_id, @societes.map{|s| [s.nom, s.id]}) %> > > 31: </div> > > 32: <div class="actions"> > > 33: <%= f.submit %> > > > Any idea why it's working with empty "client" and not with existing > > one? > > > Digging a little bit the problem, it seems it's because the select in > > base doesn't take the societe_id (which is "magically" retrieved I > > think): > > > SELECT "id", "prenom", "nom", "telephone", "courriel", "view_only" > > FROM "clients" WHERE "id" = 1 ORDER BY "id" LIMIT 1 > > > Thanks in advance, > > > Sylvain -- You received this message because you are subscribed to the Google Groups "DataMapper" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
