2011-01-04 6 views
0

私は、アプリケーションレイアウトで連絡先フォームを作成し、すべてのページに表示する方法を探しています。複数のビューを形成するレールはありますか?

理想的には私はちょうど私がアプリケーションのコントローラ内のインスタンス変数を作成しようとしました

form_for @contact_us 

を行うにはしたいと思いますが、レイアウトのロード... は(ない場合には、スコープ内にあるように見えるdoes notのアクションの結果の前にレイアウトのロード?)

私はidがform_tagで決めると思います。

このようなことをするためにususal方法は何ですか?

ありがとうございます!

答えて

1

部分的に使用することができます。部分的にフォームコードを使用し(form_tagを使用)、部分的にレイアウトにレンダリングします。

部分図の詳細here

1

@contact_usにはどのようなデータを割り当てていますか?フォームにリソースが必要ない場合は、form_forではなくform_tagを使用することを検討してください。

は、あなたのアプリケーションのコントローラに必要なものは何でも設定し...

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がにルーティングされた方には、要求を処理。

関連する問題