Forum: Ruby on Rails catch id from form and copy between objects

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.
4710a8ada2adc162aaee4288d9879d8e?d=identicon&s=25 Gerard (Guest)
on 2006-01-09 11:59
(Received via mailing list)
Hi all,

Not completely sure what I'm doing, but I need to get data from another
table
based on and id. Below is some breakpointer output:

irb> @params
=> {"project"=>{"project_description"=>"point2",
"project_name"=>"break2"},
"action"=>"create_project", "id"=>{"collect"=>"6"},
"controller"=>"adm/project"}

The one I want is the '6' in "id"=>{"collect"=>"6"}

The irb output is right after the form submission. The following
statements
are executed

@contact = Contact.new
@project = Project.new(@params['project'])
@project_contact = ProjectContact.new(@params['collect'])
breakpoint

What needs to be done is catch some fields and copy them based on the
id.

@project_contact.firstname =
@contact.find_on_id_from_form_somehow.firstname

The "find_on_id_from_form_somehow" needs to be replaced with a
conditional
find .. i guess. Can somebody give me a pointer?


Thanx a lot.

Regards,

Gerard



--
"Who cares if it doesn't do anything?  It was made with our new
Triple-Iso-Bifurcated-Krypton-Gate-MOS process ..."

My $Grtz =~ Gerard;
~
:wq!
5085ba37ba624a788e04a842cd09bd6e?d=identicon&s=25 Jens-Christian Fischer (Guest)
on 2006-01-09 14:08
(Received via mailing list)
>
> What needs to be done is catch some fields and copy them based on
> the id.
>
> @project_contact.firstname =
> @contact.find_on_id_from_form_somehow.firstname
>
> The "find_on_id_from_form_somehow" needs to be replaced with a
> conditional
> find .. i guess. Can somebody give me a pointer?

As a long time Lotus Notes developer, I know that "redundancy is
good ;-)", but in SQL land, is this really what you want? Is the
firstname in @project_contact really independent of the @contact? If
not (that's what I suspect) then you could have something like

Class Project
   belongs_to :contact
end

Class Contact
   has_many :projects
end

and in your code write something like:

@project = Project.new(@params....)
@project.contact = Contact.find(@params[:collect])

and later

project contact firstname: <%= @project.contact.firstname -%>

sorry, if this is totally not what you wanted

cu jc
4710a8ada2adc162aaee4288d9879d8e?d=identicon&s=25 Gerard (Guest)
on 2006-01-09 22:00
(Received via mailing list)
Jens-Christian,

There are two contacts tables:

company (hm) <-> (bt) contacts
project (ho) <-> (bt) project_contacts
(ho might become hm)

project (ho) <-> (bt) project_products

When creating a new project I copy some of the fields from "contacts" to
"project_contacts". The following would occcur with only the contacts
table:
When a contact is destroyed (resigns or starts working for a different
company), the project is no longer visible and will generate errors,
'nill'
issues I assume.

When I run the new_project method a nice list is created (line 23) based
on a
sql query (line 21). When submitting the form and going to
create_project I
get kinda lost. I'm not sure if line 29 is nessecary. And the line from
the
earlier email:

> > @contact.find_on_id_from_form_somehow.firstname

Should be on line 36, but I'm still figuring out how to get the contents
of a
specific field of a specific table. I'm going to do this for several,
but not
all, fields. (probably: firstname, lastname, telnumber, email, company
name
and central company telnumber). Hope you can give me some pointers.

Thanx a lot!!

Regards,

Gerard.

     18   def new_project
     19     @project = Project.new
     20
     21     @contacts_list = Contact.find_by_sql('select t1.name,
t2.firstname, t2.lastname, t2.id from companies         AS t1, contacts
AS t2
where t1.id = t2.company_id order by t1.name')
     22
     23     @contacts_list = @contacts_list.collect { |c| [ c.name + " -
" +
c.firstname + " " + c.lastname, c.id         ] }
     24     render_action 'edit_project'
     25
     26   end
     27
     28   def create_project
     29     @contact = Contact.new
     30     @project = Project.new(@params['project'])
     31     @project_contact = ProjectContact.new(@params['collect'])
     32
     33     @project.project_contact = @project_contact
     34     #breakpoint
     35     contact = Contact.find(@params['id']['collect'])
     36     @project.project_contact['firstname'] = contact["firstname"]
     37
     38     #@project.project_contact.save
     39     if @project.save
     40       flash[:notice] = 'Project was successfully created.'
     41       redirect_to :action => 'show_project', :id => @project.id
     42     else
     43       render :action => 'edit_project'
     44     end
     45   end


On Monday 09 January 2006 14:08, Jens-Christian Fischer tried to type
something like:
> > What needs to be done is catch some fields and copy them based on
> > the id.
> >
> > @project_contact.firstname =

> Class Project
> @project.contact = Contact.find(@params[:collect])
> InVisible GmbH, Langgr├╝tstrasse 172, 8047 Z├╝rich
> Phone: +41 44 401 09 30
> http://www.invisible.ch   http://not.invisible.ch

--
"Who cares if it doesn't do anything?  It was made with our new
Triple-Iso-Bifurcated-Krypton-Gate-MOS process ..."

My $Grtz =~ Gerard;
~
:wq!
This topic is locked and can not be replied to.