簡體   English   中英

Rails 3虛擬屬性未保存

[英]Rails 3 virtual attributes not saving

我有一個帶有虛擬屬性的模型:

attr_accessible :published_at

def published_at_text
  I18n.localize(published_at, format: :long_no_day_with_seconds) if published_at
end

def published_at_text=(text)
  self.published_at = Chronic.parse(text)
end

這在單元測試中工作正常,但是在視圖中更改了Published_at_text字段時不會保存。 我試過使用attr_accessible :published_at_text ,並添加published_at_will_change! setter方法,但我無法使它工作。

development.log顯示,已傳遞了已更改的published_at_text值,但是在設置器中添加對Rails.logger的調用似乎表明它甚至沒有被調用。

我在這里想念什么?

好吧,您沒有提供使用params哈希創建對象的控制器方法,但是我可以猜測。

您應該使用傳遞給控制器​​的參數來顯式調用設置器。

然后檢查該值是否在您的模型上更新。

找到了:虛擬屬性的字段未作為文章的一部分傳遞回去,因此未在params哈希中顯示。

替換為:

<%= text_field_tag 'article_published_at_text', @article.published_at_text, class: 'text_date show_seconds' %>

有了這個:

<%= text_field_tag 'article_published_at_text', @article.published_at_text, name: 'article[published_at_text]', class: 'text_date show_seconds' %>

解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM