在我的网站上,我希望根据用户输入的数据类型来呈现表单。当我在我的视图中调用控制器方法时,它输出大量的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"
答案 0 :(得分:1)
您不应该从视图中调用控制器方法。
您必须在控制器方法中为视图渲染准备所有数据(例如所有必需的模型),并将其放入@variables
。
然后在视图中使用已经准备好的@variables
编写所有html,可以从视图中调用辅助方法,但不能从控制器中调用。
尝试将您的def feed_form(form_type)
代码放入帮助程序。
P.S。:并阅读有关MVC架构的内容。