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 %> 

В этом примере у меня есть две кнопки, если объект существует, у меня есть первая кнопка, а когда нет, у меня есть вторая кнопка. Вторая кнопка отправляет запрос на контроллер Equitments # Create. Как я могу отправить запрос на оснащение # Обновление в первой кнопке?rails 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

Я понимаю ваше решение, но эта форма принимает объекты из разных моделей, поэтому мне нужно определить путь да вручную. путь всегда один и тот же equipments_path для создания и equipment_path для обновления. Как я могу это сделать ? – dijiri

+0

@dijiri Оборудование_компьютера автоматически добавляется таким образом. Если вы используете одну форму для отправки разных моделей, что-то пошло не так. Я думаю, что вы имеете в виду: эта форма используется для создания, а также для обновления оборудования. Но с 'form_for @ equipment' и' resources: equipments' (на ваших маршрутах) это автоматически генерируется с правильным путем и правильным методом. – siegy22

+0

да, эта форма предназначена для нескольких моделей. Контроллер оборудования является общим, но модели могут быть телевизорами, hi-fi, компьютерами и т. Д. – dijiri

Смежные вопросы