如何从元素中调用表单

时间:2018-05-04 10:29:36

标签: ruby-on-rails ruby

我有Post的嵌套元素,根据a:cat变量,它们也有不同的嵌套形式(本例中的文本)。

要创建文本我正在使用带有变量(cat = 1)的post方法create_element。我想调用一个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文件中我调用为我的f变量创建的@element而不是调用这个@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:欢迎改进问题标题的想法!!

0 个答案:

没有答案