-
-
Save andrewkkirk/8581a6ccefb3636cc036 to your computer and use it in GitHub Desktop.
Passing nil into "connection" Object
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Connection < ActiveRecord::Base | |
attr_accessible :reason, :established, :connector, :connectee1, :connectee2, | |
:connectee1_attributes, :connectee2_attributes, :connector_attributes | |
belongs_to :connector, class_name: "User" | |
belongs_to :connectee1, class_name: "User" | |
belongs_to :connectee2, class_name: "User" | |
accepts_nested_attributes_for :connector, :connectee1, :connectee2 | |
validates :reason, :presence => true | |
validates_length_of :reason, :maximum => 160 | |
after_create :mail_connectees | |
after_initialize :build_associated_parties | |
after_create :log_successful_mail | |
# Builds connectee's and connector objects | |
def build_associated_parties | |
build_connector | |
build_connectee1 | |
build_connectee2 | |
end | |
# Sends email to both connectee1 and connectee2 with offer to connect # | |
def mail_connectees | |
ConnectionMailer.connectee1_email(connectee1).deliver | |
ConnectionMailer.connectee2_email(connectee2).deliver | |
end | |
def log_successful_mail | |
Rails.logger.info "Mailed successfully!" | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ConnectionsController < ApplicationController | |
# instantiate new connection object # | |
def new | |
@connection = Connection.new | |
@connection.build_connectee1 | |
@connection.build_connectee2 | |
@connection.build_connector | |
end | |
# save attributes to connection # | |
def create | |
debugger | |
@connection = Connection.new params[:connection] | |
if @connection.save | |
flash[:notice] = "Connection created successfully!" | |
redirect_to @connection | |
else | |
render :new | |
end | |
end | |
def edit | |
@connection = Connection.find(params[:id]) | |
end | |
def update | |
end | |
def show | |
Connection.find(params[:id]) | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<h1>Tell Us 2 People to Introduce</h1> | |
<div class="errors"> | |
<% if @connection.errors.present? %> | |
<% @connection.errors.each do |key, message| %> | |
<p class="error"><b><%= key %></b>: <%= uppercase.message %></p> | |
<% end %> | |
<% end %> | |
</div> | |
<%= form_for @connection do |f| %> | |
<h2>Tell us two poeple you want to connect?</h2> | |
<%= f.fields_for :connectee1 do |c1| %> | |
<%= c1.label :name1 %> | |
<%= c1.text_field :name%> | |
<%= c1.label :email1 %> | |
<%= c1.email_field :email%> | |
<% end %> | |
<%= f.fields_for :connectee2 do |c2| %> | |
<%= c2.label :name2 %> | |
<%= c2.text_field :name%> | |
<%= c2.label :email2 %> | |
<%= c2.email_field :email%> | |
<% end %> | |
<h2>Who should get the credit?</h2> | |
<%= f.fields_for :connector do |c| %> | |
<%= c.label :name %> | |
<%= c.text_field :name%> | |
<%= c.label :email %> | |
<%= c.email_field :email%> | |
<% end %> | |
<%= f.label :reason %> | |
<%= f.text_area :reason %> | |
<%= f.submit "Introduce" %> | |
<% end %> |
I think I know what was happening here. I think the build_*
calls were overwriting the values passed in from the form. I think that method should probably be this:
def build_associated_parties
build_connectee1 unless connectee1
build_connectee2 unless connectee2
build_connector unless connector
end
@ajsharp - you were spot on.
Now I need to search through the API docs to find out why?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Can you paste in or screenshot the error backtrace you're getting?