2013-03-26 2 views
1

레일 3.2.13으로 업그레이드되었으며 새 환경 (ruby1.9.3)에서 실행되도록 이전 응용 프로그램을 마이그레이션하려고합니다. 이 응용 프로그램은 ruby192 및 3.0.0 레일과 함께 잘 돌아갔습니다.form_for 메소드의 잘못된 인수 수 (2에 대해 3)

새 레코드를 만들려고 할 때 (2 3) (소방관)

인수의 잘못된 번호

그리고 여기에 있었던이 오류가 발생 된 내 양식에 대한 내 코드

<%= form_for :fire_fighter, @fire_fighter, :url => { :action => "create" } do |f| %> 
다른 게시물을 읽기에 따라

, 그들은 "fire_fighter"를 제거하는 것이 좋습니다하지만 그래서이

<%= form_for :@fire_fighter, :url => { :action => "create" } do |f| %> 
같을 것이다

이 실제로 페이지를 렌더링 할 수 있지만 않았다 나는 텍스트 기입 입력하고 제출하거나 내가 말한다 응용 프로그램에 내장 된 오류 메시지가 얻을 데이터베이스의 레코드를 만들려고 할 때 : That the fields were all left blank

모두 필드 중 하나가 문자열로 설정됩니다.

아, 분명히 제출하기 전에이 필드를 모두 채 웠습니다. 그래서 지금 막 붙어 있습니다.

감사합니다. 감사드립니다.

답변

5

페이지 소스 코드와 나머지 양식 코드를 게시 할 때이 대답이 변경 될 수 있지만 인스턴스 변수에서 기호를 만들려고합니다.

<%= form_for :@fire_fighter, :url => { :action => "create" } do |f| %> 

알림 :@fire_fighter. 실제로는 @fire_fighter이어야합니다. 올바른 코드는 다음

<%= form_for @fire_fighter, :url => { :action => "create" } do |f| %> 

당신이 컨트롤러에

def new 
    @fire_fighter = FireFighter.new 
end 

그런 식으로 뭔가가 있어야하기 때문에 @fire_fighter 같은 인스턴스 변수가 사용하는 이유이어야한다, 형태는 직접 인스턴스를 잡아입니다 변수를 컨트롤러에서 폼으로 가져옵니다. 심볼은 컨트롤러에서 뷰로 가로 지르지 않지만 인스턴스 변수에서는 수행하므로 form_for 메소드의 첫 번째 인수로 @fire_fighter을 사용합니다.

관련 문제