Невозможно отобразить преобразованные единицы во вложенной форме - PullRequest
0 голосов
/ 31 июля 2010

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

before_save :convert_distance

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

  #model
  def display_distance
      self.workout.user.uses_metric ? self.distance * 1.609344 : self.distance
  end

  #view
  <%= f.text_field :distance, {:value=>f.object.display_distance} %>

  #error
  You have a nil object when you didn't expect it!

Я сделал to_yaml и убедился, что f.object является экземпляром правильного объекта.Кроме того, я использую вложенные формы, я не уверен, имеет ли это значение.

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

1 Ответ

0 голосов
/ 31 июля 2010

Форма ничего не знает о вашем объекте, вы должны передать его через контроллер.Скорее всего, у вас есть что-то вроде этого в вашем контроллере (при условии, что это представление редактирования):

def edit
  @my_object = MyObject.find(params[:id])
end

Затем вы можете получить доступ к этому в представлении следующим образом:

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