У меня есть сообщение с вложенными элементами, которые также имеют другую вложенную форму (текст для этого примера) в соответствии с переменной: cat.
Для создания текстов я использую метод post create_element с переменной (cat = 1). И я хотел бы вызвать метод AJAX, чтобы отобразить новый текст, созданный в моей форме сообщения.
Моя проблема: я не знаю, как вызвать текст nested_form, созданный непосредственно в моем методе AJAX.
Мой код:
Почтовая форма (сообщения / новые):
<%= simple_form_for @post do |f| %>
<div class="elements">
<%= f.fields_for :elements do |element| %>
<%= render 'posts/element_field', f: element %>
<% end %>
</div>
<div class="btn_add_element_area">
<a href="/posts/<%=@post.id%>/create_element?cat=1" data-method="patch" data-remote="true">
<i class="fa fa-font"></i>
</a>
</div>
<%= f.submit "Publish", class: "btn" %>
<% end %>
Почтовая форма (posts / _element_field):
<div class="element_form" id="element_form<%= f.object.id %>">
<div class="undisplay">
<%= f.number_field :cat %>
</div>
<%- if f.object.cat == 1 %>
<%= f.fields_for :post_texts do |text| %>
<%= render 'posts/elements/text_field', f: text %>
<% end %>
<% end %>
</div>
Почтовая форма (posts / _text_field):
<%= f.text_area :content %>
Пост-контроллер (create_element):
def create_element
if params[:cat] == "1"
@element = Element.create(post: @post, cat: 1)
Text.create(element: @element)
end
respond_to do |format|
format.js {render 'elements/create'}
end
end
и метод AJAX (elements / Create):
$('.elements').append("<%= j render partial: 'posts/element_field', locals: {f: @element} %>");
Ошибка = неопределенный метод `объект '
Проблема в том, что в файле AJAX я вызываю @element, созданный для моей переменной f, вместо вызова формы этого @element.
Я также попробовал что-то подобное для метода AJAX, но все еще не работает:
<% form_for(@element) do |elm| %>
$('.elements').append("<%= j render partial: 'posts/element_field', locals: {f: elm} %>");
<% end %>
Ошибка = неопределенный метод `element_path '
или
<%= simple_form_for(@post) do |p| %>
<%= p.fields_for :elements, @element do |elm| %>
$('.elements').append("<%= j render partial: 'posts/element_field', locals: {f: elm} %>");
<% end %>
<% end %>
Нет ошибок, но ничего не происходит
Если у вас есть идеи, чтобы решить это, я был бы очень признателен!
PS: И идеи по улучшению заголовка вопроса приветствуются !!