На моем сайте я хочу, чтобы форма отображалась на основе того, какой тип данных вводит пользователь. Когда я вызываю метод контроллера на мой взгляд, он выводит тонны 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"
Вы не должны вызывать методы контроллера из представления.
Вы должны подготовить все данные для рендеринга представления (например, все необходимые модели) в методе контроллера и поместить его в @variables
.
И тогда вы видите все свои html, используя уже подготовленные @variables
, вы можете вызвать методы помощников из представления, но не контроллеры.
Попробуйте ввести код def feed_form(form_type)
в помощник.
PS: и прочитайте что-нибудь о архитектуре MVC.