Rails has_many:通过在父“show”视图上创建关联和关联模型

时间:2016-12-07 01:14:37

标签: ruby-on-rails has-many-through

我的轨道5应用程序中有三个模型...我想要做的是能够在人的“显示”视图上创建一个注释,然后注释应该自动链接到该人和任何其他人我选择将备注附加到。

这是我到达的地方

请注意

class Note < ApplicationRecord
  has_many :person_notes
  has_many :people, through: :person_notes
  accepts_nested_attributes_for :person_notes
end

人注(加入表)

class PersonNote < ApplicationRecord
  belongs_to :person
  belongs_to :note
end

class Person < ApplicationRecord
  has_many :person_notes
  has_many :notes, through: :person_notes
  accepts_nested_attributes_for :person_notes
  accepts_nested_attributes_for :notes
end

在我的“人物”控制器的“show”部分,我有以下内容:

def show
  @notep = Note.new()
  @person.notes << @notep
end

每次打开页面时,都会为我的人事记录创建一个新笔记的连接(显然我只希望连接发生在我创建的笔记上。)

我在一个模态中将其渲染为我的“show”视图中的部分(有一个“结束”和一个提交按钮,但是它位于3个div之间,我知道它们不是问题的原因所以我不包括他们。:

<%= simple_form_for(@notep, remote: true) do |f| %>
<%= f.error_notification %>

  <%= f.input :subject %>
  <%= f.input :note %>
  <%= f.input :date, html5: true %>
  <div class="input-field">
     <%= f.check_box :isalert, :id => "alert" %>
     <%= f.label :isalert, :for => "alert" %>
  </div>

  <div class="input-field">
     <%= f.check_box :archived, :id => "archived" %>
     <%= f.label :archived, :for => "archived" %>
  </div>

  <div class="input-field">
     <%= f.check_box :deleted, :id => "deleted" %>
     <%= f.label :deleted, :for => "deleted" %>
  </div>
  <%= f.input :datecreated, html5: true %>
  <%= f.input :user_id %>


  <%= f.simple_fields_for :person_notes do |builder| %>
    <%= builder.association :person, label_method: :lstfstfullname %>
    <%= builder.input :deleted %>
    <%= builder.input :datecreated, html5: true %>
    <%= builder.input :user_id %>
  <% end %>

你可能会说我是一个全新的,但我很感激我能得到任何帮助。

谢谢,

利亚

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这一点,你需要一个单独的Notes控制器并创建动作来处理音符创建。然后在People show视图中,您可以添加提交到NotesController #create的表单和输入字段。