I have a complex form for event planning. Here are the abbreviated associations:
class Event < ActiveRecord::Base belongs_to :client accepts_nested_attributes_for :client, :reject_if => lambda { |a| a[:name].blank? } end class Client < ActiveRecord::Base has_many :events has_many :questions, :dependent => :destroy accepts_nested_attributes_for :questions, :reject_if => lambda { |a| a[:content].blank? } end
The form creates a new event, and I have the following structure:
- form_for @event do |event_form| %select=collection_select(client_options_for_select, :options, :group_name, :id, :name, @event.client_id) - event_form.fields_for :client do |client| = client.text_field :name - client.fields_for :questions do |question| = question.text_field :content
The client already exists and is selected from the selection menu. The observer displays the form of the nested attributes, setting the client variable in the controller action and then providing a partial one.
Here is the error I get:
ActionView::TemplateError (wrong number of arguments (0 for 1)) on line
I am having problems (I think) with the belongs_to association between Event and Client. I do not know if the Event can accept the nested attributes of the Client when the Event belongs to the client. I always did it the other way around (the client accepts nested Event attributes).
Any ideas? I can develop if you need more code or background. Thanks!
Update: controller code added upon request.
def client_questions if params[:client_id].blank? render_no_client_questions elsif @client = Client.find(params[:client_id]) and @client.is_unspecified? render_no_client_questions else respond_to do |format| format.js { render :update do |page| page[:client_questions].replace_html :partial => 'client_questions', :layout => false end } end end
end
source share