Как вызвать форму из элемента - PullRequest
0 голосов
/ 04 мая 2018

У меня есть сообщение с вложенными элементами, которые также имеют другую вложенную форму (текст для этого примера) в соответствии с переменной: 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: И идеи по улучшению заголовка вопроса приветствуются !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...