2016-07-12 2 views
-1
<%= [email protected], :url => equipments_path, :method => :post do |f| %> 
    .... 
<% if @equipment.id.present? %> 
    <div class="actions"> 
    //TODO submit_tag to action Update 
    </div> 
<% else %> 
    <div class="actions"> 
     <%= submit_tag "Adicionar Equipamento" %> 
    </div> 
<% end %> 
<% end %> 

이 예제에서는 두 개의 버튼이 있습니다. 객체가있는 경우 첫 번째 버튼이 있고 두 번째 버튼이없는 경우 두 번째 버튼이 있습니다. 두 번째 버튼은 컨트롤러 Equipment # Create에 요청을 보냅니다. 첫 번째 버튼으로 장비 # 업데이트로 요청을 보내려면 어떻게해야합니까?레일 다른 작업에 submit_tags

+0

<% = simple_form_for @equipment do | f | %>이 행은 객체가 새로운 것인지 아닌지를 확인하여 생성 또는 업데이트 경로를 자동으로 처리합니다. – user100693

답변

0
<%= simple_form_for @equipment do |f| %> 
    <div class="actions"> 
    <%= submit_tag(@equipment.persisted? ? "Create Equipment" : "Update Equipment") %> 
    </div> 
<% end %> 

이것은 짧은 방법입니다.

일반적으로 이러한 레이블을 변환하는 데 I18n을 사용합니다. (I18n for model-specific Rails submit button 참조)

+0

솔루션을 이해하지만이 형식은 다른 모델의 객체를받습니다. 따라서 수동으로 da 경로를 정의해야합니다. 경로는 항상 생성을위한 equipments_path와 업데이트 할 equipment_path와 동일합니다. 내가 어떻게 할 수 있니? – dijiri

+0

@dijiri equipment_path가 자동으로이 방법으로 추가됩니다. 하나의 양식을 사용하여 다른 모델을 제출하는 경우 무언가 잘못되었습니다. 나는 무엇을 의미하는지 생각해 봅니다 :이 양식은 장비를 생성하고 업데이트하는 데 사용됩니다. 그러나'form_for @ equipment'와'resources : equipments' (경로에 있음)를 사용하면 올바른 경로와 올바른 방법으로 자동 생성됩니다. – siegy22

+0

예,이 양식은 여러 모델 용입니다. 장비 컨트롤러는 일반적이지만 모델은 TV, 하이파이, 컴퓨터 등이 될 수 있습니다. – dijiri

관련 문제