Две формы, имеющие одинаковое действие - PullRequest
2 голосов
/ 06 января 2009

У меня в приложении есть две формы. Они оба существуют в отдельных вкладках, и я, когда отправляю одну форму, хочу, чтобы данные в другой форме также сохранялись. Как мне это сделать? Или есть лучший способ сделать это вместо использования двух отдельных форм? Есть ли лучший способ разбить длинную форму на несколько вкладок, и когда я нажимаю кнопку отправить, все данные со всех вкладок должны достигнуть моего действия. Спасибо.

Ответы [ 3 ]

5 голосов
/ 06 января 2009

Вы можете расширить одну форму, чтобы охватить все элементы обеих форм.

Это нормально, если тэги форм правильно вписываются в X / HTML.

<form action='action1'>
    <!-- All elements from both forms, plus tabs, etc. -->
</form>

Единственное, на что нужно обратить внимание, - будет ли когда-либо другая форма внутри этой области, которая должна будет перейти к другому действию. Например, если вы добавите третью вкладку между двумя другими, у нее будет другое действие.

Вы не хотите в конечном итоге, как:

<form action='action1'>

    <!-- elements from the combined forms -->

    <form action='action2'>
        <!-- elements for a totally different form, not valid inside another form -->    
    </form>

    <!-- more elements from the combined forms -->

</form>

В этом случае было бы лучше объединить две формы во время отправки с использованием JavaScript.

jQuery (jquery.com) сделает это довольно легко. Например, вы можете сериализовать обе формы, а затем объединить их и отправить результат на сервер по почте или получить.

См. http://docs.jquery.com/Ajax/serialize.

Возможно, есть лучшие способы сделать это, но я не могу думать ни о чем из головы.

1 голос
/ 06 января 2009

Я не могу проверить, работает ли концепция прямо сейчас, но я полагаю, что вы можете использовать jQuery для этого, функция отправки будет перехватывать все представления формы на любой вкладке, что-то вроде этого

$("form").submit(function(event){  
    event.preventDefault();  
    //serialize forms here and submit using jquery post  
});  
0 голосов
/ 16 июня 2010

Вы должны посмотреть на метод fields_for. Вы можете сделать что-то вроде этого:

<% form_for @house do |f| %>
  <%= f.text_field :square_feet %>

  <% fields_for @listing do |s| %>
    <%= s.hidden_field :id %>
    <%= s.text_field :asking_price %>
  <% end %>

  <%= f.submit %>
<% end %>

И тогда в вашем контроллере вы будете делать что-то вроде этого:

house = House.find(params[:id])
house.update_attributes(params[:house])
listing = Listing.find(params[:listing][:id])
listing.update_attributes(params[:listing])

Это для обновления, но вы можете делать там все, что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...