Рельсы образуют несколько представлений? - PullRequest
0 голосов
/ 04 января 2011

Я ищу способ иметь контактную форму в макете приложения и показать ее на всех страницах.

В идеале я хотел бы просто сделать

form_for @contact_us

Я пытался создать переменную экземпляра в контроллере приложения, но, похоже, он не находится в области видимости при загрузке макета .. (загружается ли макет до результата действия ??)

Я думаю, идентификатор устанавливаетсядля form_tag.

Какой обычный способ делать такие вещи?

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 января 2011

Какие данные вы присваиваете @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 направлено.

1 голос
/ 04 января 2011

Вы можете использовать частичное. Поместите код формы (используйте form_tag) в частичное и визуализируйте частичное в макете.

Подробнее о частичках здесь .

...