0

我想在我的 Rails 应用程序中添加一个新模型:

rails g model Painting patient:references treatment:references image:string

我运行迁移,然后在处理模型中的其他控制器中添加了一些行:

has_many :paintings

在患者控制器中

has_many :paintings, :through => :treatments

我还将路线更新为:

resources :treatments do
 resources :paintings
end

所以我希望这就足够了,将一个 imageNAME 添加到一个治疗中,以便我为治疗配置表单:

<%= form_for([@patient, @patient.treatments.build]) do |f| %>

 <div class="field" >
<%= f.label :content %>
<%= f.text_area :content %>
 </div>

 <div class="field" >
<%= f.label :day %>
<%= f.text_field :day, :value => Date.today %>
</div>

         <div class="field" >
         <%= f.label :image %>
         <%= f.text_field :image %>
         </div>

<div class="actions">
<%= f.submit nil, :class => 'btn btn-small btn-primary' %>
</div>

现在使用新的 :image 表单我得到了错误 undefined method `image' for # 所以我希望有人知道如何解决这个问题!谢谢!

4

1 回答 1

1

我认为问题在于表单助手期望“图像”是@患者的一种方法,而不是“治疗”。fields_for 帮助器可能是您访问相关模型字段的属性所需要的。像这样的东西:

<% fields_for @patient.paintings do |paintings_fields| %>
  <div class="field" >
    <%= paintings_fields.label :image %>
    <%= paintings_fields.text_field :image %>
  </div>
<% end %>

在此处查看 fields_for 的文档:http: //api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for

于 2013-06-18T13:35:27.840 回答