@Simple_form渲染但未显示

时间:2016-01-16 05:47:46

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

我刚刚切换到rails并开始使用我的第一个应用程序。我在形式和引导程序上有点挣扎! 它说我的表单是渲染,我没有收到任何错误,但我的表单代码都没有显示。 我使用最新的bootstrap-sass和simple_form版本运行rails 4.2.5。 我不确定我的bootstrap 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 .

4 个答案:

答案 0 :(得分:0)

你的代码是部分的,所以你从哪里调用它?它需要在另一个文件中呈现,如index.html.erb。

每当名称以_开头时,表示其部分不是整页,而是在另一页内呈现。

还有一个div不会在你的代码中结束但是为什么当你可以通过Rails传递它时甚至为一个类使用div? class:&#34; field&#34;或类似的东西。

答案 1 :(得分:0)

尝试查看生成的html源代码并查找其中一个输入,以确保它真正得到渲染。如果问题可能是您错过了<div class = "field">的结束div。

如果没有,那么我建议你看看你的new.html.erb(或者你的部分渲染,并确保你有类似的东西:

<%= render 'form' %>

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

答案 2 :(得分:0)

#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元素提供的。由于您正在使用bootstrap,这意味着您必须首先确保已安装并加载bootstrap

您可以使用rails-assets直接从bootstrap repo中提取:

#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不正确,在这种情况下,我建议您使用它重新发布。

答案 3 :(得分:-1)

非常感谢!我得到了它的工作,我只是忘记了&#34; =&#34;渲染之前!其他奇怪的事情只是在最后一刻疲惫不堪,试图让它发挥作用。 :P再次,非常感谢你的帮助!