Rails控制器将HTML呈现为纯文本而不是表单

时间:2013-11-15 04:48:42

标签: html ruby-on-rails forms

在我的网站上,我希望根据用户输入的数据类型来呈现表单。当我在我的视图中调用控制器方法时,它输出大量的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"

1 个答案:

答案 0 :(得分:1)

您不应该从视图中调用控制器方法。

您必须在控制器方法中为视图渲染准备所有数据(例如所有必需的模型),并将其放入@variables

然后在视图中使用已经准备好的@variables编写所有html,可以从视图中调用辅助方法,但不能从控制器中调用。

尝试将您的def feed_form(form_type)代码放入帮助程序。

P.S。:并阅读有关MVC架构的内容。