# routes.rb
get '/messages/new/(:parent_id)', to: 'message#new', as: :new_message
# messages_controller.rb
def new
@Message = Message.new(parent_id: params[:parent_id])
end
def create
# можно(нужно) вынести в приватный метод
if params[:message][:parent_id]
parent = Message.find(params[:message].delete(:parent_id))
@messaage = parent.children.build(message_params)
else
@messaage = Message.new(message_params)
end
if @message.save
flash[:success] = 'Your message was successfully added!'
redirect_to root_url
else
render 'new'
end
end
# _form.html.erb
# Добавить
<%= f.hidden_field :parent_id %>
# show.html.erb
<%= link_to 'reply', new_message_path(message.id) %>
Два уровня вложенности — всегда признак того, что «что-то пошло не так».