I have 3 models: FamilyTree, Node, Comment.
Every entry on a FamilyTree is a Node. A node can be a comment.
The models are as follows:
FamilyTree.rb
# == Schema Information
#
# Table name: family_trees
#
# id :integer not null, primary key
# name :string(255)
# user_id :integer
# created_at :datetime
# updated_at :datetime
#
class FamilyTree < ActiveRecord::Base
attr_accessible :name
belongs_to :user
has_many :memberships, dependent: :destroy
has_many :members, through: :memberships, source: :user, dependent: :destroy
has_many :nodes, dependent: :destroy
end
Node.rb
# == Schema Information
#
# Table name: nodes
#
# id :integer not null, primary key
# name :string(255)
# family_tree_id :integer
# user_id :integer
# media_id :integer
# media_type :string(255)
# created_at :datetime
# updated_at :datetime
# circa :datetime
# is_comment :boolean
#
class Node < ActiveRecord::Base
belongs_to :family_tree
belongs_to :user
belongs_to :media, polymorphic: true, dependent: :destroy
has_many :comments, dependent: :destroy
has_many :node_comments, dependent: :destroy
end
Comment.rb
# == Schema Information
#
# Table name: comments
#
# id :integer not null, primary key
# user_id :integer
# message :text
# node_id :integer
# created_at :datetime
# updated_at :datetime
#
class Comment < ActiveRecord::Base
validates :message, presence: true
belongs_to :user
belongs_to :node
end
The routes.rb
resources :family_trees do
resources :nodes do
resources :comments
end
end
How do I use Simple_Form to edit a comment? What does that look like?
I tried this:
<%= simple_form_for [@family_tree, @node, @comment] do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.association :user %>
<%= f.input :message %>
<%= f.association :node %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
But that gave me this error - At line 1 of that partial:
NoMethodError at /family_trees/1/nodes/4/comments/3/edit
undefined method `family_tree_comment_path' for #<#<Class:0x007f87356c5110>:0x007f8733d338a0>
It turns out that all I had to do was make a slight adjustment to my view:
<%= simple_form_for([@family_tree, @node, @comment]) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.association :user %>
<%= f.input :message %>
<%= f.association :node %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
That worked wonders.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With