Verschachtele Rest

Hallo ich bin mit Rest Sachen etwas am verzweilfeln…

class Client < ActiveRecord::Base
has_one :svasset

class Svasset < ActiveRecord::Base
belongs_to :client

map.resources :clients, do |client|
client.resource :svassets
end

Anzeigen funktioniert soweit , aber ich bekomme folgendes nicht hin:

Bei Neuanlage eines Client soll eine Svasset erstellt werden mit der
client_id

def new
@client = Client.new
end

def create
@client = Client.new(params[:client])
@svasset.clients << @client
respond_to |wants|
flash[:notice] = ‘Client was successfully created.’
wants.html redirect_to(@client)
end

You have a nil object when you didn’t expect it! The error occurred
while evaluating nil.clients
Gruß

Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635


http://www.webagentur-laude.de

Hi,
wo bekommst du @svasset her? es ist anscheinend nil…

-Alex

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

@svasset.clients << @client
@svasset is das nil object…

du solltest es vielleicht so machen:
@client = Client.new(params[:client])
@client.svasset = @client.id

manuel

Am 31.08.2008 um 22:47 schrieb Werner L.:

end
def create


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iD8DBQFIuwUXs/WwCK0ZZEARAs3FAJ9GPqjKG46b+1vwDtTnE4fRZfpeogCgmUyB
whTfF1bI+4yIJ0D2bChYDbc=
=5O2A
-----END PGP SIGNATURE-----

Am 31.08.2008 um 22:54 schrieb Manuel W.:

Hallo Manuel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

@svasset.clients << @client
@svasset is das nil object…

du solltest es vielleicht so machen:
@client = Client.new(params[:client])
@client.svasset = @client.id

client ja aber svasset
legt er leider nicht an…nix leeres … gar nix…

mhh

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

und was macht er, wenn du es so machst:

@client = Client.new(params[:client])
@svasset = Svasset.new(@client.id)

@client.svasset = @svasset

oder die letzte zeile so rum:
@svasset.client << @client

weiß gerade nicht, was deine objekte so brauchen…

gruß
manuel

Am 31.08.2008 um 23:13 schrieb Werner L.:

belongs_to :client
def new

http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)

iD8DBQFIuw7Rs/WwCK0ZZEARApzJAJ4mFYz5xYn3PoeGckXhQkLNYEUFCwCdHS0R
D+kij1wU9kijBy9l7M8yGak=
=0Qde
-----END PGP SIGNATURE-----

Am 31.08.2008 um 23:36 schrieb Manuel W.:

Das klappt jetzt endlich… wunderbar…

@client = Client.new(params[:client])
@svasset = Svasset.new(@client.id)

@client.svasset = @svasset

kann ich dich noch was löchern…

def edit
@client = Client.find(params[:id])
end

im @client sollte doch “alles drin sein”, wg belongs_to…

Editing client

<% form_for(@client) do |f| %>

<%= f.label :wert%>

<%= f.text_field :wert %>

wie muß ich das Objekt :wert formulieren? damit es Werte aus der
svasset anzeigt…?

Gruß

Am 01.09.2008 um 11:15 schrieb Sven J.:

Hallo Sven…

danke für den Tipp
<%fields_for
hatte ich dann auch im Buch gefunden

New und delete klappt jetzt, fehlt nur noch update…

Gruß

Evtl helfen Dir ja folgende Railscasts weiter. Ist zwar auch was
Ajax-Kram dabei aber es gibt einen guten Ãœberblick was man beachten
muss, wenn man mehrere Models mit einem Formular bearbeiten will.

  1. Complex Forms Part 1
  2. Complex Forms Part 2
  3. Complex Forms Part 3

Viel Erfolg.

Am Sonntag, den 31.08.2008, 23:55 +0200 schrieb Werner L.:

Hash: SHA1

class Client < ActiveRecord::Base
hin:
@svasset.clients << @client

iD8DBQFIuwUXs/WwCK0ZZEARAs3FAJ9GPqjKG46b+1vwDtTnE4fRZfpeogCgmUyB
rubyonrails-ug mailing list


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug


rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug


Mit den besten Grüßen aus Düsseldorf

Sven J.

HS Public Relations GmbH

Marbacher Str. 114
D-40597 Düsseldorf

Fon: +49 211 90486-0
Fax: +49 211 90486-22

[email protected]

Sitz der Gesellschaft: Düsseldorf - AG Düsseldorf HRB 23149 -
USt-ID-Nr.: DE119372867 - Steuer-Nr.: 13358360228
Geschäftsführer: Alois Schnabl, Claudia Heidemeyer, Sebastian Schnabl -
Postfach 18 03 41 - D 40570 Düsseldorf

Werner L. schrieb:

Am 01.09.2008 um 11:15 schrieb Sven J.:

Hallo Sven…

danke für den Tipp
<%fields_for
hatte ich dann auch im Buch gefunden

New und delete klappt jetzt, fehlt nur noch update…

An welche URL geht denn dein Formular jetzt? Ich habe mich bis eben auch
mit einem Routingfehler beim Update rumgeärgert (“no action
responded to 1”) bis mir auffiel, dass ich die falsche URL im Formular
verwendet hatte. Mein Beispiel:

Funktioniert nicht:
<% form_for(
@image,
:url => recipe_images_path(:recipe_id => @recipe.id),
:html => { :multipart => true }
) do |f| %>
(ergibt als Pfad /recipes/1/images)

Funktioniert:
<% form_for(
@image,
:url => recipe_image_path(
:recipe_id => @recipe.id,
:id => @image.id
),
:html => { :multipart => true }
) do |f| %>
(ergibt als Pfad /recipes/1/images/1)

Kleiner, dummer Fehler…

Viele
Grüße,Torsten

Am 01.09.2008 um 18:05 schrieb Werner L.:

Doch noch eine andere Frage:

map.resources :clients do |client|
client.resource :svassets
end

Ich finde keinen Grund warum ich in der taballarischen Darstellung
zwar
<%=h client.vorname %> #aus der Tabelle clients

aber keine Werte aus der

<%=h client.svassets.client_id %> #aus der Tabelle svassets

darstellen kann
=> undefined method `svassets’

Aber im der show und edit geht es problemlos…

def index
@clients = Client.find(:all)

def show
@client = Client.find(params[:id])

was verkehrt…?

Gruß

Hallo Torsten…

es geht jetzt alles.

Ich hatte keine Beispiele gefunden für das update von verschachtelten
resourcen… hört immer alles beim create auf…

class Client < ActiveRecord::Base
has_one :svasset, :dependent=> :destroy

class Svasset < ActiveRecord::Base
belongs_to :client

map.resources :clients do |client|
client.resource :svassets
end

<% form_for(@client) do |f| %>
<%= f.label :vorname %
<%= f.text_field :name %>

<%fields_for :svassets do |asset|%>
<%= asset.label :bezeichnung %>

<%= asset.text_field :bezeichnung %>

update habe ich jetzt so gemacht:

def update
@client = Client.find(params[:id])
@svassets = Svasset.find_by_client_id(params[:id])

if @client.update_attributes(params[:client])
@svassets.update_attributes(params[:svassets])

Weiß nicht ob das besonders chick ist…aber es funktioniert.

new und edit jetzt noch als partial auslagern.

Gruß

Am 01.09.2008 um 17:19 schrieb Torsten Schoenebaum:

Am 02.09.2008 um 10:05 schrieb Andreas R.:

Hallo Andreas.

Hallo Werner,

On Mon, Sep 1, 2008 at 8:32 PM, Werner L.
[email protected] wrote:

Doch noch eine andere Frage:

wo warst Du eigentlich gestern? Viele Deiner Fragen hätte man Dir wohl
gerne bei einer Bratwurst beantwortet.

  1. Bin Vegatarier…
  2. Habe etwas Termindruck…

next time…
bin ich dann ja auch etwas erfahrerner…

Gruß und danke für die Einladung

Hallo Werner,

On Mon, Sep 1, 2008 at 8:32 PM, Werner L. [email protected]
wrote:

Doch noch eine andere Frage:

wo warst Du eigentlich gestern? Viele Deiner Fragen hätte man Dir wohl
gerne bei einer Bratwurst beantwortet.

Andreas