I have an event form with some nested attribute models. The additional models are rendered after a client is selected from a select box. An observer watches and calls a controller action which renders a partial containing the fields_for nested models. The issue I'm having is that I can't pass the event 'form' block to the newly rendered partial - at least I can't figure out how...
The code below raises the error: "wrong number of arguments (0 for 1)". Any help or suggestions are appreciated. As mentioned below, I'm also willing to re-implement this using unobtrusive JavaScript if you can provide an example for this scenario.
Event Form:
<%- form_for @event do |form| %>
<%= select_tag :id=>event_client_id %>
<%= observe_field :event_client_id, url => {:action => 'client_questions'}, :with => "'client_id=' + encodeURIComponent(value)+'&event_id='+#{@event.id} %>
Event Controller
def client_questions
@event = Event.find(params[:event_id])
@client = Client.find(params[:client_id])
@client_questions = @client.questions.active
respond_to do |format|
format.js {
render :update do |page|
page[:client_questions].replace_html :partial => 'client_questions', :layout => false
end
}
end
end
_client_questions.html.erb partial
<%- form.fields_for :client, @client do |client| %>
<%= client_text_field :name %>
<%- client.fields_for :questions do |question| %>
<%=question.text_field :content %>