![](/img/trans.png)
[英]Rails - default value in text_field but only for new_record?
[英]Rails: decode text_field value
我有一個Rails應用,其中我使用觀察者對所有模型數據進行編碼。 我使用html代碼對其進行編碼。 例如, Börje's idé
變成了Börje's idé
。
現在的問題是,每當我創建要編輯的表單時。
<%= form_for(resource) do |f| %>
<%= f.label :name, "Name" %>
<%= f.text_field :name %>
<% end %>
有沒有一種方法可以強制text_field方法進行一些解析(即通過我的d()方法運行它)。
我想要一個無需修改每個模型和表格的解決方案。 也許可以重寫ActionView::Helpers::FormBuilder.text_field
方法嗎?
這是我發現的一種解決方案:
# controllers/application_controller.rb
module ActionView
module Helpers
class FormBuilder
alias_method :old_text_field, :text_field
def d(str)
return str unless str.is_a? String
next_str = HTMLEntities.new.decode(str)
while (next_str != str)
str = next_str
next_str = HTMLEntities.new.decode(str)
end
return next_str
end
def text_field(method, options = {})
@object[method] = d(@object[method])
return old_text_field(method, options)
end
end
end
end
我猜想使用instance_method
並將其綁定到覆蓋的方法中,可以通過在范圍內將old_text_field局部化來清理命名空間。 我不確定如何執行此操作,但是如果有人要編輯此答案並執行此操作,請隨時執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.