2011-01-04 2 views
0

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

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

form_for @contact_us 

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

Я предполагаю, что id для формы form_tag.

Какая у нас возможность сделать это?

Спасибо!

ответ

1

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

Подробнее об элементарных частях here.

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 маршрутизируется ,

Смежные вопросы