Ruby on rails 使用jquery rails提交两个表单

Ruby on rails 使用jquery rails提交两个表单,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,好的,我的问题很简单,我在一个视图上有两个非常非常相似的表单,只有id不同: <table width="100%"> <tr> <%= form_for ([@patient, @patient.treatments.build]),:html => { :id => "my_form2" } do |f|%> <th><%= f.collection_select :category_id, Category.find(:al

好的,我的问题很简单,我在一个视图上有两个非常非常相似的表单,只有id不同:

<table width="100%">
<tr>
<%= form_for ([@patient, @patient.treatments.build]),:html => { :id => "my_form2" } do |f|%>
<th><%= f.collection_select :category_id, Category.find(:all), :id, :typ %></th>
<th><%= f.text_field :content %></th>
<th><%= f.hidden_field :note, :id => "canvascontent" %></th>
<th><%= f.text_field :day, :value => Date.today %></th>
<th><input type="button" value="Speichern" class = "btn btn-small btn-primary" id = "button1" onclick="sketch.toDataURL()"></th>
<th><input type="button" onclick="sketch.clearRecording()" class="btn btn-small btn-danger" value="Löschen"></th>
<% end %>
</tr>
</table>

<table width="100%">
<tr>
<%= form_for ([@patient, @patient.treatments.build]),:html => { :id => "my_form1" } do |f|%>
<th><%= f.hidden_field :category_id, :value => findems(Ebm) %></th>
<th><%= f.hidden_field :content , :id => "inputbox"%></th>
<th><%= f.hidden_field :day, :value => Date.today %></th>
<% end %>
</tr>
</table>
但它不起作用,rails总是只保存我函数中第一个触发的表单,在本例中为“我的表单1”。我认为应该怪我的控制器,因为在第一个表单保存后,它会重定向到另一个站点,这样第二个表单就不会保存。但我是个新手,不知道如何克服这种行为。我的控制器:

    def create
    @patient = Patient.find(params[:patient_id])
    @treatment = @patient.treatments.create(params[:treatment])
    redirect_to patient_path(@patient)
    end
我试图简单地删除控制器的最后一行,但随后出现错误:

 Missing template treatments/create,

看看你的代码,我真的不知道你为什么要分别提交这两个表格。。。如果您真的想这样做,您可以在第一个表单中传递所有需要的参数,然后在控制器中使用这些参数

有了这些参数,你可以用它们做任何你想做的事情,包括从你的控制器中构建另一个@patient


从您的代码中,我看到您正在使用
params[:treatment]
params[:patient_id]
,但我在您的
#my_form1
表单中没有看到这些参数。这些是如何传递的?

看起来您需要在这里嵌套模型表单。看看这个railscast,你可能会从中受益
    def create
    @patient = Patient.find(params[:patient_id])
    @treatment = @patient.treatments.create(params[:treatment])
    redirect_to patient_path(@patient)
    end
 Missing template treatments/create,