2013-11-15 2 views
0

На моем сайте я хочу, чтобы форма отображалась на основе того, какой тип данных вводит пользователь. Когда я вызываю метод контроллера на мой взгляд, он выводит тонны HTML, где форма должна быть как обычный текст, начиная с DOCTYPE до. Я использую почтовую форму, которая была прежней, статически, чтобы попробовать ее.Rails контроллер рендеринга HTML как обычный текст, а не форма

Контроллер:

def feed_form(form_type) 

form_type = %w{type_1 type_2}.include?(form_type) ? form_type : 'post' 
render "_#{form_type}_form" 
end 

И вид вызова действия:

= feed_form 'post' 

и форма:

.feed-form 
%h3 News Feed 
= form_for(@post) do |f| 
    = render 'shared/error_messages', object: f.object 
    .field 
    = f.text_area :content, placeholder: "Make your new post here..." 
    = f.submit "Post", class: "post-button" 

ответ

1

Вы не должны вызывать методы контроллера от Посмотреть.

Вы должны подготовить все данные для визуализации рендеринга (например, все необходимые модели) в методе контроллера и поместить его в @variables.

И после этого вы пишете все свои html с помощью уже подготовленного @variables, вы можете вызвать методы помощников из представления, но не с контроллера.

Попробуйте ввести код def feed_form(form_type) в помощник.

P.S .: и прочитайте что-нибудь о архитектуре MVC.

+0

Я забыл упомянуть, что у меня был «вспомогательный метод: form_feed» в моем контроллере, я думал, что он обеспечит такую ​​же функциональность, но как только я переместил его в свой помощник, он работал нормально. Я рассмотрю helper_method – NoobException

Смежные вопросы