동일한 페이지에서 모델에 대한 추가 및 편집 양식을 갖고 싶습니다. 당신은 내가 보여주고 JS로이 개 형태를 숨기고있어이 스크린 샷에서 볼 수 있습니다레일에서 같은 페이지에 양식 추가 및 편집
편집 양식에서는, 사용자는 항공기의 ID를 선택하고 그것을 몇 가지 아약스와 다른 데이터를 채 웁니다.
현재,이 같은 파셜에서 두 가지 형태를 렌더링 해요 :
<!-- Add Aircraft -->
<div id="aircraftmodal-add-content">
<%= render 'aircrafts/new' %>
</div>
<!-- Edit Aircraft -->
<div id="aircraftmodal-edit-content">
<%= render 'aircrafts/edit' %>
</div>
내 형태가 거의 동일한 내용을 렌더링, 내가 편집 다른 ID를 형성함으로써 주위 해킹 해요 :
<!-- Add Partial --->
<%= form_for @aircraft, validate: true, remote:true do |air| %>
<!-- Edit Partial -->
<%= form_for @aircraft, :html => { id:'edit_aircraft'}, validate: true, remote:true do |air| %>
두 페이지를 같은 페이지에 함께 넣을 때 수정 사항을 처리하는 데 레일스 빌트인을 어떻게 사용할 수 있습니까? 편집 양식을 다른 동작으로 지정해야합니까, 아니면 일반적인 코드로 둘 다 처리 할 수 있습니까?
def create
@aircraft = current_user.aircrafts.build(params[:aircraft])
@aircraft.save
end
귀하의 안내를 환영합니다. :)
그것은 좋은 제안입니다. 나는 그것을 좋아한다. 하지만 내 컨트롤러에서 내'create' 액션은 폼 제출이 * add * 또는 * edit *인지 여부를 어떻게 알 수 있을까요? –
'@ aircraft'가 이미 생성 되었다면'save' 메소드를 호출 할 것입니다. – Hauleth
첫 번째 경우와 같습니다. 우리는 민감한 것을 변경하지 않았습니다. 기본적으로 "form_for @aircraft"는 다음과 같이 말합니다 : if @ aircraft.new_record? 그런 다음 action =>에 제출하십시오. HTTP POST로 작성하십시오. 그렇지 않으면 @ aircraft.persisted일까요? action => : HTTP PUT으로 업데이트하십시오. –