Rails形成多个视图?

时间:2011-01-04 16:15:54

标签: html ruby-on-rails forms helpers

我正在寻找一种在应用程序布局中显示联系表单并在所有页面上显示的方法。

理想情况下,我想做一个

form_for @contact_us

我已尝试在应用程序控制器中创建实例变量,但在布局加载时它似乎不在范围内。 (布局是否在动作结果之前加载?)

我想我会找到一个form_tag。

做这种事情的用途是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

你可以使用部分。将表单代码(使用form_tag)放在partial中,然后在布局中渲染部分。

有关partials here的更多信息。

答案 1 :(得分:1)

您分配给@contact_us的数据是什么?如果您的表单不需要资源,您可以考虑使用form_tag而不是form_for

在应用程序控制器中设置您需要的任何内容......

before_filter :prepare_contact_form

def prepare_contact_form
  @contact_us = "The stuff your form needs"
end

创建包含表单的部分视图。假设form_tag满足您的需求,缺乏更多信息......

<!-- app/views/_contact_form.html.erb -->
<%= form_tag "/contact_us" do %>
  <%= @contact_us %>
  <%= text_field_tag :from_email %>
  <%= text_field_tag :message %>
  <%= submit_tag 'Submit' %>
<% end %>

在应用程序布局中渲染部分...

<!-- app/views/layouts/application.html.erb -->
render :partial => "contact_form"

然后在路由到/contact_us的控制器操作中处理请求。