Em *_*Sta 21 ruby ruby-on-rails ruby-on-rails-3
我创建了一个简单的rails项目.所有工作的罚款,直到我试图添加一个新的模型Paintings是belongs_to治疗和Patient那has_many通过治疗绘画.所以我创建的嵌套表单不会显示出来,我相信它与控制器有关!谢谢,德国的问候!
治疗控制器:
class TreatmentsController < ApplicationController
  def create
    @patient = Patient.find(params[:patient_id])
    @treatment = @patient.treatments.create(params[:treatment])
    redirect_to patient_path(@patient)
  end
  def destroy
    @patient = Patient.find(params[:patient_id])
    @treatment = @patient.treatments.find(params[:id])
    @treatment.destroy
    redirect_to patient_path(@patient)  
  end
end
用nested fields_for它治疗的形式没有出现:
<%= form_for([@patient, @patient.treatments.build]) do |f| %>
  <div class="field">
    <%= f.label :content %>
    <%= f.text_area :content, :cols => "30", :rows => "10" %>
  </div>
  <div class="field">
    <%= f.label :category_id %>
    <%= f.collection_select :category_id, Category.find(:all), :id, :typ %>
  </div>
  <%= f.fields_for :paintings do |ff| %>
    <div class="field">
      <%= ff.label :name, 'Tag:' %>
      <%= ff.text_field :name %>
    </div>
  <% end %>
  <div class="field">
    <%= f.submit nil, :class => 'btn btn-small btn-primary' %>
  </div>
<% end %>
更新:
显示网站:
<% @patient.treatments.each do |treatment| %>
  <tr>
    <td><%= treatment.category.try(:typ) %></td>
    <td><%= treatment.content %></td>
    <td><%= treatment.day %></td>
    <td><div class="arrow"></div></td>
  </tr>
  <tr>
pra*_*ase 63
请试试
= f.fields_for :paintings, Painting.new do |p|
Ale*_*eks 12
即使这个问题还很老,但你错过了new这个问题至关重要.这些方法destroy并create没有任何问题.如果你有一个new方法,看起来像这样:
class TreatmentsController < ApplicationController
  def new
    @patient = Patient.new
  end
end
然后解决方案是修改new方法以"构建" paintings  如下:
class TreatmentsController < ApplicationController
  def new
    @patient = Patient.new
    @patient.paintings.build
  end
end
尝试在控制器中执行以下操作
@patient.treatments.build
查看build_association部分http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to
您还应该阅读有关嵌套属性的信息.使用这些参考 http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
愚蠢的错误,但我正在使用:
<% f.fields_for :partner do |fp| %>
代替:
<%= f.fields_for :partner do |fp| %>