2016-12-13 3 views
0

Я сжимаю свой путь через обучение Rails, но почему-то мои представления не отображаются правильно!Мои представления не отображают текст, который был введен в форму

Когда я ввожу информацию в форму на странице «документы/новые» через веб-браузер, текст не отображается, который хранится в переменных. Скорее, это буквально переменные экземпляра, которые отображаются.

Я использую жемчужину simple_form, а также драгоценный камень haml.

EDIT: Я использую 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.ha мл:

= 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' 

Любая помощь очень ценится!

ответ

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 
+0

Спасибо! Это решение сейчас! –

0

В вашем show.haml Я думаю, что вы не визуализируете переменную. С haml вы должны быть очень конкретны с рендерингом. Поместите экземпляр на новую строку с правильным шагом

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

Если вы только получаете начиная вы можете рассмотреть вопрос о переходе на ERB для рендеринга, пока вы не получите суть того, как рельсы/рубин работы, а затем перейти на Haml позже

+0

Спасибо! Я получил это сейчас! –

0

Вы забыли указать @doc в своем действии Show в контроллере. Вот почему:

@doc.title 
@doc.content 

Отображается буквально.

В ваших шоу действий обновлять это следующим образом:

def show 
    @doc = Doc.find(params[:id]) 
end 
Смежные вопросы