Hi!
I’ve got a not so unfamiliar multiple models in one form problem. Due
to the complex forms railscast I’ve got it up and running for a one-to-
many relationship but now I have a one-to-one relationship and I
didn’t get it done.
Here is my code, perhaps someone can take a look and give me a hint
what’s wrong. I put what is going wrong into the code where I think it
is belonging to. And I don’t know if it matters but I’m running Rails
2.1.1.
Model
class Subscription < ActiveRecord::Base
belongs_to :user
def user=(attributes)
##
# !!! Here is something wrong
# - I get a Hash with all my fields here
# - attributes belongs to class HashWithIndifferentAccess
# - Whith self I get the error „undefined method
`stringify_keys!’…“
# - Without self the subscription model is saved without the user
model
self.build_user(attributes)
end
end
class Subscription < ActiveRecord::Base
has_one :subscription
end
Controller
class SubscriptionsController < ApplicationController
def new
@subscription = Subscription.new
@subscription.build_user
respond_to do |wants|
wants.html
wants.xml { render :xml => @subscription }
end
end
def create
@subscription = Subscription.new(params[:subscription])
respond_to do |wants|
if @subscription.save
flash[:notice] = 'Subscription was successfully created.'
wants.html { redirect_to root_url }
wants.xml { render :xml => @subscription, :status
=> :created, :location => @payment }
else
wants.html { render :action => “new” }
wants.xml { render :xml => @subscription.errors, :status
=> :unprocessable_entity }
end
end
end
end
View (Haml syntax)
-
form_for :subscription, @subscription, :url => subscriptions_path do
|subscription_form|… subscription fields
-
subscription_form.fields_for :user do |user_form|
… user fields
-
Every help is appreciated. Thanks in advance.
Regards,
Stefan