Контроллер Rails отображает HTML как обычный текст, а не как форму

0

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

контроллер:

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"
Теги:
forms

1 ответ

1
Лучший ответ

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

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню