2 кнопки отправки в форме - PullRequest
8 голосов
/ 11 марта 2011

У меня есть вопрос о формах.У меня есть довольно стандартная форма, которая сохраняет пост (называемый в моем приложении электронным отчетом) с заголовком и телом.В таблице также есть «опубликованное» поле, которое является логическим.Сохраненный электронный отчет отображается на общедоступном сайте только в том случае, если для этого поля установлено значение true, а по умолчанию установлено значение false.

Вместо флажка по умолчанию я хотел бы отобразить две кнопки в конце формы:кнопка «Опубликовать сейчас» и кнопка «Сохранить как черновик».Если пользователь нажимает первый, опубликованное поле будет установлено в true.Если последнее, то ложное.В PHP я использовал для отображения 2 полей отправки с разными значениями имени, а затем обрабатывал ввод с помощью оператора if / else, чтобы определить правильный SQL-запрос для построения.В Rails я предполагаю, что поместил бы эту логику в контроллер под соответствующее действие, но я не уверен, как манипулировать значениями имени или идентификатора кнопок.

Для записи, я 'Я использую Formtastic, но если кто-то может показать мне, как это сделать с помощью стандартных тегов Rails, это тоже нормально.Вот код для моей формы в том виде, в каком она есть сейчас:

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

20 голосов
/ 11 марта 2011

Я не знаю насчет formtastic, но с помощью построителя форм по умолчанию, вы можете сделать это следующим образом:

<%= 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
1 голос
/ 25 октября 2011

в дополнение к ответу @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
0 голосов
/ 11 марта 2011

Я думаю, вам нужно использовать jQuery. Вы можете привязать событие нажатия кнопки и отправить форму для указанного местоположения.

...