【问题标题】:@Simple_form rendering but not showing@Simple_form 渲染但不显示
【发布时间】:2016-01-16 05:47:45
【问题描述】:

我刚刚切换到 Rails 并开始了我的第一个应用程序。然而,我在表格和引导程序上有点挣扎! 它说我的表单正在呈现并且我没有收到任何错误,但我的表单代码都没有显示。 我正在使用最新的 bootstrap-sass 和 simple_form 版本运行 rails 4.2.5。 我不确定我的引导 css 是否真的在工作,它似乎没有。一直在尝试不同的版本,安装和卸载以及更改代码几个小时,但似乎可以让它工作。非常感谢您的帮助!

亲切的问候, 延斯

表单(_form.html.erb)代码;

<%= simple_form_for @book, html: ({ cĺass:'form-horizontal'}) do |f| %>
<div class = "field">
<%= f.input :title, label: "Book Title" %>
<%= f.input :description %>
<%= f.input :author %>
<%= f.button :submit %>

<% end %>

我将 application.css 重命名为 .scss,它现在只包含; @import "bootstrap-sprockets"; @import "bootstrap"; application.js 包含:

//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require turbolinks
//= require_tree .

【问题讨论】:

  • 安装 bootstrap 和 simple_form 后是否重启了服务器?

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


【解决方案1】:

您的代码是部分代码,那么您从哪里调用它?它需要在另一个文件(如 index.html.erb)中呈现。

只要名称以 _ 开头,就意味着它是部分页面而不是完整页面,它会在另一个页面中呈现。

还有一个 div 不会在您的代码中结束,但是当您可以通过 Rails 传递它时,为什么还要为一个类使用 div 呢? class: "field" 或类似的东西。

【讨论】:

  • 第一行不需要等号,这可能是问题所在。你错了!
【解决方案2】:

尝试查看生成的 html 源代码并查找其中一个输入,以确保它真的被渲染了。如果不是问题可能是您缺少&lt;div class = "field"&gt; 的关闭 div。

如果没有,那么我建议您查看您的 new.html.erb(或者在您渲染局部的地方并确保您有类似的东西:

<%= render 'form' %>

注意= 在这里很重要。如果你错过了这个,这可能是你的问题的原因。

【讨论】:

    【解决方案3】:
    #app/views/books/new.html.erb
    <%= render "form", locals: { book: @book } %>
    
    #app/views/books/_form.html.erb
    <%= simple_form_for book, html: ({ cĺass:'form-horizontal'}) do |f| %>
       <%= f.input :title, label: "Book Title" %>
       <%= f.input :description %>
       <%= f.input :author %>
       <%= f.submit %>
    <% end %>
    

    以上内容应确保您输出的是有效的表单 (HTML)。


    如果您仍然没有看到表单出现,则可能是 CSS 问题。不同之处在于 CSS 为 HTML 提供了样式定义。

    正如其他答案中提到的,解决方案在于您为 HTML 元素提供的 classes。由于您使用的是bootstrap,这意味着您必须首先确保您已安装并加载了bootstrap。

    您可以使用rails-assets 直接从bootstrap 仓库拉取:

    #Gemfile
    source "https://rails-assets.org"
    source "https://rubygems.org"
    
    gem 'rails-assets-bootstrap', ">= 4.0.0.alpha"
    
    #app/assets/stylesheets/application.sass
    @import bootstrap
    

    --

    如果您想直接测试您的 HTML/CSS,您需要从 HTML 中删除 class: "form-horizontal" 类。如果这显示了表单,则表示您的 CSS 不正确,在这种情况下,我建议您在此处回复。

    【讨论】:

      【解决方案4】:

      非常感谢各位!我让它工作了,我只是在渲染之前忘记了“=”!其他奇怪的事情只是在最后一刻疲惫地拼凑起来,试图让它发挥作用。 :P 再次感谢你们的帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-21
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-28
        相关资源
        最近更新 更多