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"
4

1 回答 1

1

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

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

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

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

PS:并阅读有关 MVC 架构的内容。

于 2013-11-15T05:22:39.530 回答