Anybody knows about an updated tutorial like this one:
http://railsforum.com/viewtopic.php?id=717
That one was written in 2006 and some of it''s code is deprecated. I
have
tried to update the code but I can''t get it quite right yet.
If I validate_presence_of parent_id, I get error "parent_id can''t
be
blank".
If I don''t validate the presence of the parent_id, it saves fine, but
in
the console I can see there is two separate insert statements happening,
such as...
INSERT INTO "parents" ("name") VALUES
(''Bob'')
INSERT INTO "children" ("parent_id") VALUES
(''1'')
So all I''m really asking is for a similar tutorial. I have been
searching but can''t find what I''m looking for yet.
I''ll keep on
searching.
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
On Jul 20, 2:32 am, "Leonel *.*" <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Anybody knows about an updated tutorial like this one:http://railsforum.com/viewtopic.php?id=717 > > That one was written in 2006 and some of it''s code is deprecated. I have > tried to update the code but I can''t get it quite right yet > > If I validate_presence_of parent_id, I get error "parent_id can''t be > blank". > > If I don''t validate the presence of the parent_id, it saves fine, but in > the console I can see there is two separate insert statements happening, > such as... > INSERT INTO "parents" ("name") VALUES (''Bob'') > INSERT INTO "children" ("parent_id") VALUES (''1'') > > So all I''m really asking is for a similar tutorial. I have been > searching but can''t find what I''m looking for yet. I''ll keep on > searching.The term you are looking to use to google for an answer is Nested Forms. I usually search like this: rails [version] [search terms] There is plenty of stuff out there on nested forms, checkout Railscasts episode 196 for a place to start. HTH Paul> > -- > Posted viahttp://www.ruby-forum.com/.-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
That Railscast is good but it''s not what I''m looking for. I
don''t want
to dynamically add fields. And I just need to add one Account and one
User that belongs to that account. As simple as that.
To make things simpler I just tried to work with ONE field, if it works
then I can add more. So after a lot of experimentation and googling.
This is what I came up with.
It''s a form from account model. I''m trying to create a company
object
and adding the company name and the account_id.
_form.html.erb (account)
<%= form_for @account do |account_form| %>
<p>
<% account_form.fields_for :companies do |company_form| %>
<%= company_form.label :name, ''Company name'' %>
<%= company_form.text_field :name %>
<% end %>
</p>
<div class="actions">
<%= account_form.submit %>
</div>
<% end %>
----------------------------------------------------
accounts_controller.rb
def new
@account = Account.new
@account.companies.build
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @account }
end
end
def create
@account = Account.new(params[:account])
@account.companies.build(params[:companies])
if @account.save
redirect_to(@account, :notice => ''User was successfully
created.'')
else
render :action => "new"
end
end
--------------------------------------------
It seems like I finally accomplished what I wanted. BUUUUT! when I
submit the form, I get the Company Name field filled, but also ANOTHER
Company Name field (I have no idea where it came from) and the message
"Company name can''t be blank".
Why does it create an EXTRA Company Name field???
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Ok fixed it by changing the controller. build is already on
''new'', so I
removed it from ''create''.
-------------------------------
accounts_controller.rb
-------------------------------
accounts_controller.rb
def new
@account = Account.new
@account.companies.build
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @account }
end
end
def create
@account = Account.new(params[:account])
if @account.save
redirect_to(@account, :notice => ''User was successfully
created.'')
else
render :action => "new"
end
end
-------------------------------
Now if I do this on the company model...
validates_presence_of :account_id
I get error: "Companies account can''t be blank". How can I
fix that?
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Ok, I''m able to write to 3 models in 1 form. The code creates a brand
new record in each of the three tables and writes the corresponding
account_id where it''s supposed to be. Everything works well, except one
thing.
PROBLEM: "company_id" it''s not being written in the
"users" table.
"account_id" writes in the "companies" and "users"
table.
It''s just the "company_id" that doesn''t get saved.
Here are the models.
------------------------------------------------
Account
------------------------------------------------
has_many users
has_many companies
accepts_nested_attributes_for :companies
accepts_nested_attributes_for :users
------------------------------------------------
Company
------------------------------------------------
belongs_to account (account_id)
has_many users
accepts_nested_attributes_for :users
------------------------------------------------
User
------------------------------------------------
belongs_to account (account_id)
belongs_to company (company_id)
------------------------------------------------
This is what I have in the accounts_controller.rb
------------------------------------------------
def new
@account = Account.new
@account.companies.build
@account.users.build
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @account }
end
end
def create
@account = Account.new(params[:account])
if @account.save
redirect_to(@account, :notice => ''User was successfully
created.'')
else
render :action => "new"
end
end
---------------------------------------------------------
This is a simplified version of the form
----------------------------------------------------------
<%= form_for @account do |account_form| %>
<% account_form.fields_for :users do |user_form| %>
<p>
<%= user_form.label :first_name %> <%= user_form.text_field
:first_name %>
</p>
<p>
<%= user_form.label :last_name %> <%= user_form.text_field :last_name
%>
</p>
<p>
<%= user_form.label :email %>
<%= user_form.text_field :email %>
</p>
<p>
<%= user_form.label :username %><br />
<%= user_form.text_field :username %><br />
</p>
<% end %>
<p>
<% account_form.fields_for :companies do |company_form| %>
<%= company_form.label :name, ''Company name'' %>
<%= company_form.text_field :name %>
<% end %>
</p>
<div class="actions">
<%= account_form.submit %>
</div>
<% end %>
---------------------------------------------------------------
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
On Jul 20, 2011, at 7:44 PM, Leonel *.* wrote:> ------------------------------------------------ > Account > ------------------------------------------------ > has_many users > has_many companies > accepts_nested_attributes_for :companies > accepts_nested_attributes_for :users > > ------------------------------------------------ > Company > ------------------------------------------------ > belongs_to account (account_id) > has_many users > accepts_nested_attributes_for :users > > ------------------------------------------------ > User > ------------------------------------------------ > belongs_to account (account_id) > belongs_to company (company_id)You are not going to get company_id written to the user table this way - as there is nothing to tell account - when it is creating the users that it should connect them to company too Are these statements true ? Account_0 => User => Account_1 : Account_0 == Account_1 Account_0 => User => Company => Account_1 : Account_0 == Account_1 Account_0 => Company => User_0..User_N => Account_1 : Account_0 == Account_1 (this last one - i mean to say - are all users of a company belonging to the same account? you may be able to customize your companies_attributes= method in Account such that it cascades the users_attributes into the new company that it has created. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Well, this worked. It added the account_id on companies. It added the
company_id on users.
It did not, however, add account_id on users. But I guess it should be
ok, right? I mean, if I know which company the users belongs to, I''m
still able to find out what account_id is the user from.
Remember,
Account
Company belongs to account
User belongs to company
--------------------------------------------------
accounts_controller.rb
--------------------------------------------------
def new
@account = Account.new
company = @account.companies.build
company.users.build
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @account }
end
end
--------------------------------------------------
_form.html.erb
--------------------------------------------------
<%= form_for @account do |account_form| %>
<% account_form.fields_for :companies do |company_form| %>
<p>
<%= company_form.label :name, ''Company name'' %>
<%= company_form.text_field :name %>
(Or non-profit, organization, group, school, etc.)
</p>
<% company_form.fields_for :users do |user_form| %>
<p>
<%= user_form.label :first_name %> <%= user_form.text_field
:first_name %>
</p>
<p>
<%= user_form.label :last_name %> <%= user_form.text_field
:last_name %>
</p>
<p>
<%= user_form.label :email %>
<%= user_form.text_field :email %>
</p>
<% end # fields_for :users %>
<% end # fields for :companies %>
<div class="actions">
<%= account_form.submit %>
</div>
<% end %>
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.