Я занимаюсь разработкой конфигуратора продукта. Проблема, казалось, заключалась в том, что буквально для каждого продукта есть несколько компонентов, и то, как они взаимодействуют друг с другом, является довольно случайным. Поэтому, если вы измените количество на одну часть, в другом месте его нужно будет настроить автоматически и т. Д.Рельсы, отслеживающие действия Js
Из-за всего этого и того факта, что эти правила часто меняются, я решил сделать их функциями 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 привел количество людей по умолчанию, которое их значения из БД и т. Д., Как мне сказать, какое новое значение есть, если/когда я хочу добавить в корзину?
Большое спасибо!
Спасибо за ваш ответ Пан. Я до сих пор не понял способ правильно хранить различные диапазоны и опции в db, чтобы рельсы их подбирали. Для значений по умолчанию нет проблем. Но как вы думаете, я должен дать ему эти правила, поскольку явно хранить каждую возможную форму в db слишком много. Чтобы дать вам некоторый фон, на данный момент пользовательский интерфейс - это Excel, а «правила» хранятся в виде строк в db. Когда пользователь выбирает продукт, эти строки (которые являются формулами excel) приводятся, поэтому некоторые элементы становятся динамическими, когда что-то меняется. – Lievcin
Я думаю, это зависит от того, как часто вы хотите настроить эти формулы. Если они очень статичны, вы можете закодировать их непосредственно в javascript и поддерживать это в своей базе кода. Если они часто меняются, вы можете сохранить их в БД и иметь интерфейс администратора для их управления. При загрузке страницы вы можете запросить БД для правил и передать их клиенту. Вы также можете сделать вызов AJAX, когда продукт выбран для загрузки связанных правил из Rails в Javascript. –
Правила часто меняются, а также вводятся новые продукты со своими собственными правилами. Когда вы говорите: «Если они часто меняются, вы можете хранить их в БД и иметь интерфейс администратора для их управления», вы имеете в виду хранить их как код js или как код ruby? – Lievcin