2013-05-18 3 views
0

В моем приложении мне нужно проверить, есть ли у определенного span с id="transaction_sign" класс negative, а если есть - добавьте «минус» на номер, который пользователь ввел в поле и сохранил его в отрицательной форме к базе данных.Синоним «hasClass» в rails

В самом деле, если с помощью JQuery и Rails вместе, что нужно сделать это:

def add_sign_to_transaction 
    if $('#transaction_sign').hasClass('negative') { 
     @transaction.amount *= -1 
    }; 
end 

Но, конечно, я не могу сделать в в моем transaction_controller.rb файле, где мне нужно поставить этот def с before_filter ,

Есть ли способ проверить css на странице в рельсах? Или, может быть, мне нужны некоторые драгоценные камни?

+0

Почему ваш контроллер знает что-либо о ваших классах CSS вашего вида? –

+0

Я нашел решение, которое более подходит для моего приложения. Я добавил второй столбец с отрицательными номерами и полями изменения (положительный - отрицательный) с помощью события jQuery 'click'. Значит, менять знак сейчас не нужно. Но я до сих пор не понимаю, как сказать контроллеру изменить знак из представления. –

ответ

0

Ваша форма должна послать либо:

  1. преобразованных данных, в первую очередь, или
  2. Enough дополнительные данные, чтобы сделать какие-либо преобразования на стороне сервера.

Представления на уровне слоя представляют собой хрупкие заменители для соответствующих моделей.

технический ответ на ваш вопрос - нет, если только слой вида не изменен только кодом на стороне сервера, а не JS. Если клиент изменяет стиль (ы), тогда вы должны либо отправить правильные данные, либо флаг. Разумеется, флаг мог бы быть скрытым полем, установленным в стиле элемента формы, или логическим, вызванным присутствием данного стиля. ИМО - это неправильный подход: отправьте отрицательное число.

0

Вы действительно должны делать это в своем JS-файле. Найдите диапазон, затем добавьте в свой счетчик и отправьте запрос ajax, чтобы сохранить отрицательный номер в своей базе данных.

Смежные вопросы