2 кнопки, 1 форма - PullRequest
       13

2 кнопки, 1 форма

0 голосов
/ 21 мая 2009

У меня есть простая форма, которая выглядит так

<% remote_form_for post, :url => post_path(post), :method => :put do |f| -%>
  <%= f.submit "Approve" %>
  <%= f.submit "Deny" %>
<% end -%>

Что делает

<input type="submit" value="Approve" name="commit"/>
<input type="submit" value="Deny" name="commit"/>

В моем контроллере у меня есть следующая логика

@post.approved =  params[:commit] == 'Approve' ? true : false

Таким образом, проблема заключается в том, что если пользователь нажимает кнопку «Подтвердить» или «Запретить», то отправляемый параметр будет :commit => "Approve".

Кто-нибудь знает об ошибке, связанной с тем или иным (простым) способом выполнения той же функциональности?

Спасибо.

Ответы [ 3 ]

1 голос
/ 22 мая 2009

Другой вариант - переопределить параметр «имя» второй кнопки.

<%= f.submit "Deny", :name => "commit_deny" %>
1 голос
/ 22 мая 2009

JS lib (я думаю, прототип) не знает, какая кнопка была нажата. Он просто сериализует значения полей формы для запроса Ajax. При использовании обычной формы POST браузеры добавляют правильное значение к параметру commit.

Вы можете добавить скрытое поле формы (например, действие). Затем добавьте код JS, чтобы установить требуемое значение скрытого поля при нажатии соответствующей кнопки (и до отправки запроса Ajax).

0 голосов
/ 22 мая 2009

Я думаю, что Submit уникален для каждой формы (HTML), поэтому у yopu есть два варианта:

  1. Используйте 2 формы по 1, каждая из которых приводит к одному и тому же действию (CSS вам по душе)
  2. Используйте 2 элемента управления типа кнопки (т.е. не отправлять) и отправляйте с обоими событиями onClick (необходим JavaScript)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...