将表单对象传递给从ajax请求呈现的部分对象

我有一个带有一些嵌套属性模型的事件表单。 从选择框中选择客户端后,将呈现其他模型。 观察者观察并调用控制器动作,该动作呈现包含fields_for嵌套模型的部分。 我遇到的问题是我无法将事件’form’块传递给新渲染的部分 – 至少我无法弄清楚如何…

下面的代码引发了错误:“错误的参数数量(0表示1)”。 任何帮助或建议表示赞赏。 如下所述,如果您可以为此方案提供示例,我也愿意使用不引人注目的JavaScript重新实现它。

活动表格:

 event_client_id %>  {:action => 'client_questions'}, :with => "'client_id=' + encodeURIComponent(value)+'&event_id='+#{@event.id} %> 

事件控制器

  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

     

因此,您的主窗体是在一个动作中呈现的,并且您希望将该窗体对象从该视图传递到另一个在第二个部分中呈现的视图? 这不是你可以做的事情,但是你可以在第二次渲染的部分中修改你的视图代码,这样它就可以渲染而不需要现有的表单对象,例如:

 <%- fields_for "event[client_attributes]", @client do |client| %> <%= client_text_field :name %> <%- client.fields_for :questions do |question| %> <%= question.text_field :content %> 

我没有运行此代码来测试它,所以将它生成的html与现有部分生成的html进行比较,如果它在与主窗体相同的操作中呈现。