【问题标题】:Result of rendering form in Rails has no form tags, only inputs在 Rails 中渲染表单的结果没有表单标签,只有输入
【发布时间】:2016-05-30 07:31:17
【问题描述】:

我在另一个表单中渲染一个表单,但是这个新渲染的表单没有表单标签,只有输入和提交。

可能是什么问题?

这是我的控制器:

  def new
    @customer = Customer.new
    respond_to do |format|
        format.html
        format.js
    end
  end

这是新的.js.erb:

 $('#customer-form').show();
 $('#customer-form').html("<%= j (render 'form_ajax') %>");

这是 _form_ajax.html.erb:

<%= form_for @customer, remote: true do |f| %>

... inputs in here ...

  <div class="actions">
    <%= f.submit "ОК" %>
  </div>

<% end %>

要渲染的 HTML 元素:

<%= form_for(@customer) do |f| %>
  .. some controls here ..  
  <div id="customer-form" style="display:none;"></div>
  .. some inputs here ..
  <div class="actions">
    <%= f.submit "ОК" %>
  </div>
<% end %>

【问题讨论】:

  • 你能分享 id = 'customer-form' 的 HTML 元素吗?
  • @Priity 添加了 HTML 元素。

标签: javascript forms ruby-on-rails-4


【解决方案1】:

这与 Rails 无关,HTML 不允许一个表单包含在另一个表单中。通过替换第一个表单解决了这个问题。

【讨论】:

    【解决方案2】:

    尝试将 new.js.erb 中的渲染修改为以下内容:-

    $('#customer-form').html("<%= escape_javascript(render partial: 'form_ajax', locals: {customer: @customer}) %>");
    

    让我知道它是否有效。谢谢

    【讨论】:

    • 把这个放到文件console.log("");并发布您在浏览器控制台中看到的内容。
    • 放什么?我按照你的建议修改了 new.js.erb。
    • 嗯.. 我知道我需要什么了。使用表单标签呈现部分内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多