我的观点没有呈现输入到表单中的文本

时间:2016-12-13 03:21:47

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

我通过学习Rails挤压我的方式,但由于某种原因,我的观点没有正确呈现!

当我将信息输入到' docs / new'通过Web浏览器页面,不会呈现存储在变量中的文本。相反,它实际上是渲染的实例变量。

我正在使用simple_form gem以及haml gem。

编辑:我使用Rails 4.2.5以及C9 IDE,如果这有任何区别

This is the formatting I want:

This is the formatting I'm getting:

控制器:

class DocsController < ApplicationController

before_action :find_doc, only: [:show, :edit, :update, :destroy]

def index
end

def show
end

def new
    @doc = Doc.new
end

def create
    @doc = Doc.new(doc_params)

    if @doc.save
        redirect_to @doc 
    else
        render 'new' 
    end
end

def edit
end

def update
end

def destroy
end

private

def find_doc
    @doc = Doc.find(params[:id])
end

def doc_params
    params.require(:doc).permit(:title, :content)
end

_form.html.haml:

= simple_form_for @doc do |f|
= f.input :title
= f.input :content
= f.button :submit

show.html.haml:

%h1= @doc.title
%p= @doc.content

new.html.haml:

%h1 New Doc!

= render 'form'

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

我认为您表单中的缩进不正确。试试这个:

= simple_form_for @doc do |f|
  = f.input :title
  = f.input :content
  = f.button :submit 

And in show.html.haml:

%h1
  = @doc.title
%p
  = @doc.content

答案 1 :(得分:0)

在你的show.haml中,我认为你没有渲染变量。使用haml,你必须非常专注于渲染。将实例放在具有适当间距

的新行上
end_cursor

如果您刚开始使用,可以考虑切换到erb进行渲染,直到获得rails / ruby​​如何工作的要点,然后再转换为haml

答案 2 :(得分:0)

您忘记在控制器的“显示”操作中定义@doc。这就是原因:

@doc.title
@doc.content

字面显示。

在你的节目动作中更新如下:

def show
  @doc = Doc.find(params[:id])
end