You need to add accepts_nested_attributes_for :user to your ContractRequest 
model and then your style of referencing those fields in your form changes to 
something like


 <%= f.text_field("user[last_name]", class: "form-control", placeholder: "Last 
name") %>


I think that should do the trick but read up on accepts_nested_attributes_for 
cause it's a little tricky to get it right. 


come to think of it on 2nd thought maybe it's

 <%= f.text_field("user_attributes[last_name]", class: "form-control", 
placeholder: "Last name") %>


-Jason


> On Nov 29, 2014, at 6:21 PM, bradford li <[email protected]> wrote:
> 
> 
> 
> I am trying to create a form that updates 2 tables in my database. I'm not 
> quite sure how to build this contact form quite yet. So my first short term 
> goal is to simply update my `contact_requests` and `users` tables. I am 
> aiming to do a `one to many` relationship between `users` and 
> `contact_requests`. This allows one `user` to have many `contact_requests`. I 
> am new to rails so I feel like there are gaps in my code and I am making some 
> mistakes as well.  Ideally, I will want to include a mailer in the form as 
> well but one step at a time.
> 
> I currently have a `user` table and a `contact_request` table: 
> 
>  
> <https://lh5.googleusercontent.com/-qZtDF_xGMys/VHpT5tg4SMI/AAAAAAAAAGM/WB4j3-K3p08/s1600/Screen%2BShot%2B2014-11-29%2Bat%2B2.48.18%2BPM.png>
> 
> 
> `user_id` from the `contact_requests` table is a foreign key that references 
> `users.id`
> 
> Here is by current schema code:
> 
>     ActiveRecord::Schema.define(version: 20141127114323) do
>       create_table "contact_requests", force: true do |t|
>         t.datetime "created_at", null: false
>         t.datetime "updated_at", null: false
>         t.string   "message",    null: false
>         t.integer  "user_id"
>       end
>     
>       add_index "contact_requests", ["user_id"], name: 
> "index_contact_requests_on_user_id", using: :btree
>     
>       create_table "users", force: true do |t|
>         t.datetime "created_at",   null: false
>         t.datetime "updated_at",   null: false
>         t.string   "first_name",   null: false
>         t.string   "last_name",    null: false
>         t.string   "email",        null: false
>         t.string   "phone_number"
>       end
>     end
> 
> Here are my models and controllers:
> 
>     class User < ActiveRecord::Base
>       has_many :contact_requests
>       # validate the presence of the attributes
>       validates(:first_name, presence: true)
>       validates(:last_name, presence: true)
>       validates(:email, presence: true)
>     end
> 
>     class ContactRequest < ActiveRecord::Base
>       belongs_to :user
>       validates :user_id, presence: true
>       validates :message, presence: true, length: { maximum: 500 }
>     end
> 
>     class ContactController < ApplicationController
>       def new
>               @user = User.new
>               @contact_request = ContactRequest.new
>       end
>     end
> 
> 
> I am getting this error:
> 
>  
> <https://lh4.googleusercontent.com/-MRCqb9NOm6A/VHpTtDohT-I/AAAAAAAAAGE/hqgxKaH07bE/s1600/Screen%2BShot%2B2014-11-29%2Bat%2B2.34.29%2BPM.png>
> 
> 
> 
> form:
> 
>     <%= form_for(:contact, remote: true, class: "contact-input") do |f| %>
>           <div class="col-md-12">
>             <div class="col-md-6">
>               <div class="contact-input-margin form-group">
>                 <%= f.text_field(:user, :first_name, class: "form-control", 
> placeholder: "First name")%>
>               </div>
>               <div class="contact-input-margin form-group">
>                 <%= f.text_field(:user, :last_name, class: "form-control", 
> placeholder: "Last name") %>
>               </div>
>               <div class="contact-input-margin form-group">
>                 <%= f.email_field(:user, :email, class: "form-control", 
> placeholder: "Email") %>
>               </div>
>               <div class="contact-input-margin form-group">
>                 <%= f.telephone_field(:user, :phone_number, class: 
> "form-control", placeholder: "Phone number") %>
>               </div>
>             </div>
>             <div class="contact-input-margin col-md-6">
>               <div class="form-group">
>                 <%= f.text_area(:contact_request, :message, class: 
> "form-control contact-margin", rows: "8", placeholder: "Message...") %>
>               </div>
>             </div>
>           </div>
>           <%= f.submit(class: "btn btn-xl") %>
>         <% end %>
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To post to this group, send email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/6f73f2d0-e80d-4ff1-89a0-1e1b63ffa3ac%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/rubyonrails-talk/6f73f2d0-e80d-4ff1-89a0-1e1b63ffa3ac%40googlegroups.com?utm_medium=email&utm_source=footer>.
> For more options, visit https://groups.google.com/d/optout 
> <https://groups.google.com/d/optout>.

----

Jason Fleetwood-Boldt
[email protected]
http://www.jasonfleetwoodboldt.com/writing

All material © Jason Fleetwood-Boldt 2014. Public conversations may be turned 
into blog posts (original poster information will be made anonymous). Email 
[email protected] with questions/concerns about this.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/457AF6FB-29C4-41CE-A0F6-7CD6D8C21FC1%40datatravels.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to