2012-03-05 2 views
0

내 머리글에서 사용자는 양식을 통해 "항목"을 추가 할 수 있습니다. 나는이 옵션은 각 페이지에 사용할 수있게하려면, 그래서 난 내 헤더에 있습니다레일 헤더 : 서식을 설정하는 방법?

<%= 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) ... 

을하지만 항목이 유효하지 않은 경우 당신이하지 값으로 채워져에 의해 검증 하나를 사용하여 양식에 대한 새 항목을 만들 수 있기 때문에, 형태는 (비어있을 것이다 제어 장치). 시도해보십시오.

<%= form_for(@item || Item.new)... 
관련 문제