2012-08-23 2 views
1

JSON을 통해 타사 API와 상호 작용하는 양식을 작성 중입니다. 제 목표는 폼에 입력 된 값을 기반으로 JSON 호출을 생성하는 것입니다. JSON 응답이 오류를 반환하면 form_fields가 응답을 생성하는 데 사용 된 값을 유지하도록하고 싶습니다.레일에서 JSON 작업하기 form_for

양식을 작성하고 JSON 필드를 양식에 바인딩하려면 어떻게해야합니까?

모델에 연결하면 나는 보통 같은 거라고 :

<%= form_for @person do |f| %> 
    <%= text_field_with_label f, :first_name %> 
<% end %> 

내 컨트롤러 내가 가진 것 :

def new 
@person = Person.new 
end 

을하지만 어떻게이 때이 설정 것 모델 없음. 컨트롤러의 새로운 동작에는 무엇이 있습니까? 빈 JSON 구조체? 처음 JSON 호출을하는 데 사용되는 값을 유지할 수 있도록 입력 필드를 설정하는 방법 (오류가있을 때 응답을 사용자가 다시 폼으로 가져 오는 경우)

답변

1

대신 form_for를 사용하면 form_tag 및 기타 * _tag 메소드를 사용하게됩니다. 위의 예는 다음과 같습니다.

원하는대로 컨트롤러에서 처리 할 수 ​​있습니다. 당신이 너무 routes.rb 파일에 액션에 대한 사용자 지정 경로를 추가해야합니다 기억 :

get 'users/new' 
post 'users/myaction' 

컨트롤러 액션의 일반적인 논리는 다음과 같습니다

def new 
end 

def myaction 
    success = call_external_service_here 
    if success 
    redirect_to 'somewhere' 
    else 
    render 'new' 
end 

당신은 새를 떠날 것이다 컨트롤러에서 메서드가 비어 있습니다. text_field_tag의 두 x 째 인수는 필드의 값을 제공하며, 새 조치에서는 공 i이되지만 외부 서비스 호출이 실패하면 양식 페이지가 표현 될 때 값이 삽입됩니다.

+0

환상적인 답변 - 많은 감사합니다. – cman77