2013-05-02 3 views
0

이것은 간단한 질문입니다. 양식이 올바르게 채워지지 않으면 작성 작업에서 render 'new'으로 전화하여 양식을 올바르게 작성할 수 있습니다. 불행히도 이로 인해 URL에있는 매개 변수가 손실됩니다. 렌더링 호출과 함께 전달하려면 어떻게해야합니까?어떻게 렌더 호출로 매개 변수를 전달합니까?

답변

1

조치 방법은 매개 변수를 선택하여 인스턴스 변수에 지정해야합니다. 이 예제의 모델을 메모라고합니다.

<%= form_for(@note) do |f| %> 
    <%= f.text_field :name %> 
    <%= f.submit %> 
<% end %> 
:

def create 
    @note = Note.new(params[:note]) 
    respond_to do |format| 
     if @note.save 
     format.html { redirect_to @note, notice: 'Note was successfully created.' } 
     else 
     format.html { render action: "new" } 
     end 
    end 
    end 

인스턴스 변수는보기 내에서 다음 볼 수 있습니다

0

일반적으로 매개 변수는 양식에서 숨겨진 필드로 전달되므로 작성 작업에서 매개 변수를 가져올 수 있습니다.

0

렌더링 호출은 "@"가 붙은 변수 (인스턴스 변수)를 사용해야합니다. #create에 #new와 동일한 인스턴스 변수가 있는지 확인하십시오.

class ExampleController < ApplicationController 
    def new 
    @user = User.new 
    end 

    def create 
    @user = User.new(params[:user]) 
    if @user.valid? 
     @user.save 
     redirect_to "/" 
    else 
     render 'new' 
    end 
    end 
end 
0

더 좋은 방법은 당신이 그들을 필드를 숨김 모델의 attr_accessor로 숨겨진 필드를 선언했다 정의,하지만 당신은 당신이 쓸 수있는 유일한 포스트 매개 변수를 사용하기로 한 경우에도 매개 변수를 가져 전달하는 주장하면 모든 params 같은 양식 작업 :

form_for @event, : url => events_path + '? getvar = 1'do | f |

관련 문제