Rails отслеживает, что делает Js - PullRequest
1 голос
/ 26 января 2011

Я нахожусь в процессе разработки конфигуратора продукта.Казалось, проблема в том, что буквально для каждого продукта есть несколько компонентов, и то, как они взаимодействуют друг с другом, совершенно случайно.Так что, если вы измените количество в одной части, в другом месте его нужно будет настроить автоматически и т. Д.

Из-за всего этого и того факта, что эти правила часто меняются, я решил превратить их в Jsфункции, так что у меня есть рельсы такие вещи:

<% @counter = 0 %>
<% @people.each do |p| %>
<% @counter += 1 %>
<tr>
<%= form_for(:p, :remote => true)  do |f| %>
<th><%= f.label(p.name) %></th>
<th><%= f.label(p.country.name) %></th>
<th><%= f.label(p.state.name) %></th>
<th id="<%= "money_" + @counter.to_s %>"> <%= f.select(:money, 1..10, :selected => p.money)%></th>
<th id="<%= "comment_" + @counter.to_s %>"><%=p.money_comment%></th>
<% end %>
<% end %>

(имена полей здесь случайные)

и у меня есть функция Js в загружаемом файле, например:

function change_people() {
  money1 = $('money_1').children[0].value;
  $('comment_2').update((money1 == 5) ? "selected 5!" : 'why not 5?');
}

document.observe('dom:loaded', function() {
  change_people();
  $('money_1').children[0].observe('change', change_people);
});

Так что это работает, я могу изменить значения в зависимости от того, что выбрал пользователь и т. Д., Но ... вот в чем вопрос.Как рельсы знают об этом?Rails привел число людей по умолчанию, которое их значения из БД и т. Д., Как мне сказать, что это новое значение, если / когда я хочу добавить в корзину?

Большое спасибо!

1 Ответ

0 голосов
/ 27 января 2011

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

$('.money').change(function(){ $(this).closest('form').submit(); });

Этот код говорит, что всякий раз, когда ввод с классом «деньги» корректируется, просто отправьте ближайшую форму (которая является удаленной формой, которую вы определили).

В качестве дополнительного совета вам не нужно отслеживать счетчик с явной переменной, как в примере с кодом, вы также можете использовать each_with_index:

@people.each_with_index do |p, counter|
  ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...