在show.html.erb中创建嵌套属性表单



我熟悉如何获得典型的nested_attributes形式在铁路4中工作4仅适用于我的人模型上的嵌套属性之一。

class Person
  has_many :histories
  accepts_nested_attributes_for :histories
end
class History
  belongs_to :person
end

查看

<% @person.histories.each do |history| %>
  <% if history.created_at != nil %>
    <p>Date: <%= history.created_at.strftime("%a, %b %e %Y") %></p>
    <p>Visit Summary: <%= history.visit_summary %></p>
  <% else %>
    <p>N/A</p>
  <% end %>
<% end %>
<%= form_for @person do |p| %>
  <%= p.fields_for :histories do |history| %>
    <%= history.label :visit_summary %>
    <%= history.text_area :visit_summary %>
  <% end %>
  <%= p.submit 'Create History Item' %>
<% end %>

我知道我已经犯了一些视图中的逻辑错误,但是我基本上试图用这种形式来实现的是当一个人导航到/人/:id,他们看到了该人的摘要,包括与该人相关的历史。他们也有一个形式,仅在人的历史收藏中添加一个历史记录项目。

现在,为了使表格显示在视图中,我必须这样编辑我的控制器:

class PeopleController < ApplicationController
  ...
  def show
    @person = Person.find(person_params)
    @person.histories.build
  end
end

但是,称之为历史。建立创建一个对象,最终在视图中的历史记录项目列表中显示,即使尚未持续到数据库中,因此我用于排除其创建的历史记录项目的逻辑属性是零。另外,当我提交历史项目并将其重定向到/people/:ID时,我会呈现两个表单字段;一个用于编辑我以前创建的历史记录项目,一个创建新的历史记录项目。我只想在任何给定时间出现一个空的表单字段。

我的问题是:

1。)如何在我的人模型上显示一个小的单个属性形式。

2。)正在使用Nested_Attributes构成了它的方式?

3。)可以提供在线文档,以说明如何创建这类小型自定义表格?

非常感谢!

创建一个与人对象和形式尚未关联的新历史对象,该对象和 visit_summary输入 post in to histories#create路由。在该路线中,使用输入参数创建新的历史记录,然后将其分配给它,然后保存。
本质上,仅仅因为您具有嵌套关联,并不意味着您不能仅仅创建一个历史对象。

在您的个人控制器中:

def show
  @person = Person.find(person_params)
  @history = History.new
end

您的表格

<%= form_for [@person, @history] do |f| %>
  <%= f.label :visit_summary %>
  <%= f.text_area :visit_summary %>
  <%= f.submit 'Create History Item' %>
<% end %>

另外,如果您不想在form_for方法中使用@person,则可以使用隐藏的字段标签:

<%= form_for @history do |f| %>
  <%= f.hidden_field(:person_id, value: @person.id) %>
  <%= f.label :visit_summary %>
  <%= f.text_area :visit_summary %>
  <%= f.submit 'Create History Item' %>
<% end %>

您的历史控制器

def create
  history = History.new(history_params)
  history.person = Person.find(params[:person_id])
  history.save
  ...
end

相关内容

  • 没有找到相关文章

最新更新