2012-03-05 12 views
0

私のヘッダーでは、ユーザーはフォームを通じて「アイテム」を追加できます。私は、このオプションは、各ページで利用できるようにしたいので、私は私のヘッダーにあります。Railsヘッダー:フォームの設定方法は?

<%= form_for(@item) do |f| %> 

      <div> 
       <div class="title"><%= f.label :name, "Name" %></div> 
       <div class="champ"><%= f.text_field :name %></div> 
      </div> 

      <div> 
       <%= f.submit "add this item" %> 
      </div> 
<% end %> 

しかし、それは、各コントローラでこれを追加するために私を強制的に:

def action 
    @item = Item.new 
end 

私はそれを避けることができる方法は?アプリケーションコントローラを使用していますか?

ありがとうございます!

答えて

1

アプリケーションコントローラでメソッドを定義し、before_filterを使用します。

class ApplicationController < ActionController::Base 
    .. 
    before_filter :initialize_item 

    def initialize_item 
    @item = Item.new 
    end 
end 

initialize_itemメソッドが各リクエストで実行されます。

+0

ありがとう! – Maxxx

+0

@ Maxxこれがうまくいく場合は、答えとして受け入れたくありませんか? –

1

あなたはこれを行うことができます:

<%= form_for(Item.new) ... 

をしかし、項目が無効である場合、フォームは、フォームのための新しいアイテムを作成するので、(空でも値があらかじめ入力1を使用していないし、あなたによって検証されますコントローラ)。試してみてください:

<%= form_for(@item || Item.new)... 
関連する問題