![]() |
|
![]() ![]() ![]() |
|
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Есть код:
<span class="price"><%= (product.price) %></span> Подскажите как умножить product.price например на число 8.10 и вывести результат в span Пробовала вставить метод eval, но что-то не получается... |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
А product.price - это строка?
![]() По теме:
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Определена так: add_column :products, :price, :decimal, :precision => 8, :scale => 2, :default => 0 Но когда я по своему разумению написала так: <span class="price"><%= (product.price) * 8 %></span> Я получила восемь раз вывод цены на сайте. ![]() |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
А как быть при такой ситуации:
class StoreController < ApplicationController before_filter :poisk *************************** def poisk @curs = Back.find(:first, :order => 'id desc') end Попытка написать так: <td><span class="price"><%= @curs * (product.price) %> гр.</span></td> приводит к ошибке: undefined method `*' for #<Back:0x476d4ec @attributes={"id"=>"13", "course"=>"8.10"}> Добавлено через 10 минут и 40 секунд А так: <td><span class="price"><%= (product.price) * @curs %> гр.</span></td> Back can't be coerced into BigDecimal |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Странный баг, (product.price) интерпретируется как строка. ![]() Попробуй <%= (8*product.price) %> Добавлено через 2 минуты и 12 секунд Ну так у тебя @curs - это объект типа Back. Кстати, странное название... Поэтому должно быть: <%= @curs.course * product.price %> -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Работает! ![]() Спасибо! Для моего варианта из-за приведения типов, пришлось написать так: <td><span class="price"><%= (product.price * @curs.course.to_f) %> гр.</span></td> Дело в том, что изначально в course планировалось хранить курс и буквы типа: 8.10 гр. Теперь там храниться просто 8.10, поэтому @curs.course.to_f, чтобы не переделывать таблицу в базе ![]() Добавлено через 4 минуты и 46 секунд А не подскажите, функцию, которая могла бы отбросить дробную часть и округлить число в этом выражении: <td><span class="price"><%= h(product.price * @curs.course.to_f) %> гр.</span></td> Это сообщение отредактировал(а) Лена - 25.12.2009, 19:23 |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Ну так round, ясное дело. Кстати, зачем тебе вызов h в данном случае? <%= (product.price * @curs.course.to_f).round %> Странное решение, у тебя там много валют что-ли? В чём сложность переделать таблицу? См. change_column -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Лена |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Cпасибо работает! h вставляю, так как в книге пугают - вставлейте везде где только можно метод h ![]()
У меня там одна валюта, просто модернизацию базы я всегда пытаюсь оттянуть как можно подальше. Очень не люблю этот процесс. Хотя на будущий проект (если он будет), понимаю, что лучше переделать столбик, чем писать to_f Сейчас все работает как надо, спасибо! ![]() |
||||
|
|||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Ну ты хоть запомнила его назначение? h - это сокращение от html_escape, что ты в числе экранировать собралась? ![]() -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
||||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
||||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
floor округляет в меньшую сторону ceil - в большую to_i убирает дробную часть Это сообщение отредактировал(а) source777 - 25.12.2009, 22:24 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
Большое спасибо, попробую. Купила себе книжку: http://www.books.ru/shop/books/520674 но толком нужную информацию в ней не нахожу. ![]() Спасибо форуму! ![]() |
|||
|
||||
source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 12 Всего: 56 |
Ну тут у тебя 2 варианта: 1) прочитать всю книгу по порядку, а затем с легкостью вспоминать какая инфа там есть, а какой нет. 2) пользоваться предметным указателем: Числа > с плавающей точкой > округление > стр. 160 ![]() -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
Лена |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 879 Регистрация: 16.8.2006 Репутация: нет Всего: 11 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Ruby on Rails" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Ruby On Rails | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |