2 кнопки отправки в форме
У меня есть вопрос о формах. У меня есть довольно стандартная форма, которая сохраняет сообщение (называемое eReport в моем приложении) с заголовком и телом. В таблице также есть поле" published", которое является логическим. Сохраненный eReport отображается на общедоступном сайте только в том случае, если этому полю присвоено значение true, а по умолчанию установлено значение false.
Вместо флажка по умолчанию я хотел бы отобразить две кнопки в конце формы: кнопку" Опубликовать сейчас "и кнопку" Сохранить как черновик". Если пользователь нажимает первый, опубликованные поле будет иметь значение true. Если последнее, то ложное. В PHP я использовал для отображения 2 полей submit с различными значениями имен, а затем обрабатывал входные данные с помощью оператора if / else, чтобы определить правильный SQL-запрос для построения. В Rails я предполагаю, что я поместил бы эту логику в контроллер, под соответствующее действие, но я не уверен, как манипулировать именами или значениями идентификаторов кнопок.
Для записи, я использую Formtastic, но если бы кто-нибудь мог показать мне, как это сделать с помощью по умолчанию рельсы образуют теги, это тоже нормально. Вот код для моей формы, как она сейчас выглядит:
<% semantic_form_for @ereport do |form| %>
<% form.inputs do %>
<%= form.input :title %>
<%= form.input :body %>
<% end %>
<% form.buttons do %>
<%= form.commit_button :label => "Publish Now" %>
<%= form.commit_button :label => "Save as Draft" %>
<% end %>
<% end %>
Заранее спасибо за помощь!
3 ответа:
Я не знаю о formtastic, но с помощью конструктора форм rails по умолчанию вы можете сделать это следующим образом:
<%= form.submit "Save with option A", :name => "save_option_a" %> <%= form.submit "Save with option B", :name => "save_option_b" %>
Затем в контроллере вы можете выбрать их в парах:
if params[:save_option_a] # do stuff end
В дополнение к ответу @ iddlefingers, вот вид журнала приложения (чередование некоторых бесполезных параметров из-за объяснения целей)
Parameters: {"utf8"=>"✓", ..., "comentar"=>"Confirmar"}
Где мы видим, что
comentar
- это имя параметра, а"Confirmar"
- его значение, которое также является текстом кнопки.Который был получен с помощью
submit_tag "Confirmar", :name => 'comentar'
Таким образом, в целом вы могли бы иметь (если вы хотите уменьшить число
params
, с которыми вы работаете) несколькоsubmit_tag "onevalue", :name => 'SAMEname'
,submit_tag "othervalue", :name => 'SAMEname'
...И получить их в вашем контроллере
if params[:SAMEname] == "onevalue" # do stuff elsif params[:SAMEname] == "othervalue" #do different stuff end