新手问题 rails 嵌套 layout 问题

hsl4125 · July 04, 2019 · Last by hsl4125 replied at July 04, 2019 · 1535 hits

application.html.erb

...
<body>
  <%= render "layouts/header" %>
  <div class="columns is-centered">
    <div class="column is-8">
      <div class="main-container container">
        <%= yield %>
      </div>
    </div>
  </div>
  <%= render "layouts/footer" %>
</body>

edit.html.erb

<% provide(:title, "Edit") %>

<h1 class="title is-3 has-text-centered">Edit post</h1>

<%= render 'post-form', post: @post, title: "Edit" %>

_post-form.htm.erb


<%= form_with(model: post, local: true) do |form| %>
  <div class="field">
    <%= form.label :title, class: "label" %>
    <div class="control">
      <%= form.text_field :title, class: "input", placeholder: "Please enter Title" %>
    </div>
  </div>

  <div class="field">
    <%= form.label :content, class: "label" %>
    <div class="control">
      <%= form.text_area :content, class: "textarea", placeholder: "please enter content", rows: "5"%>
    </div>
  </div>

  <div class="stackedit-button-wrapper">

  <div class="field buttons is-centered">
    <div class="control">
      <%= form.submit class: "button is-link" %>
    </div>
    <% if title == "Edit" %>
    <div class="control">
      <%= link_to 'Destroy', @post, class: "button is-link", method: :delete, data: { confirm: 'Are you sure?' } %>
    </div>
    <% end %>
  </div>
<% end %>

<%= javascript_include_tag 'stackedit' %>
<%= javascript_include_tag 'md-editor' %>

有这样三个 erb 文件,我期待的是 footer 应该出现在 body 的内层,但是 render 的结果:

...
<body>
...
  <div class="columns is-centered">
    <div class="column is-8">
    <footer class="footer"> 
...

edit 这个用到了两个 erb 模板,我期望首先 render 内部的 form 然后再 render 整体的 application,layout 这部分我还是有点迷糊。感觉应该是连续两次 render 出了问题。这种情况应该怎么做?

检查你 view 的代码 是不是有 html 标签没闭合的

_post-form.html.erb 的 div class="stackedit-button-wrapper" 似乎没闭合

浏览器对错误的 HTML 有纠错功能,只不过纠错的结果可能不会是你期望的...

Reply to jasl

确实是这个 div 没有闭合导致的

<div class="stackedit-button-wrapper">

谢谢你!

hsl4125 closed this topic. 04 Jul 13:43
hsl4125 reopened this topic. 04 Jul 13:43
hsl4125 closed this topic. 04 Jul 15:58
You need to Sign in before reply, if you don't have an account, please Sign up first.