新手问题 rails 嵌套 layout 问题

hsl4125 · 2019年07月04日 · 最后由 hsl4125 回复于 2019年07月04日 · 259 次阅读

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出了问题。这种情况应该怎么做?

共收到 3 条回复

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

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

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

jasl 回复

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

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

谢谢你!

hsl4125 关闭了讨论 07月04日 13:43
hsl4125 重新开启了讨论 07月04日 13:43
hsl4125 关闭了讨论 07月04日 15:58
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册