【发布时间】:2016-01-18 15:34:17
【问题描述】:
我可以在 model 中使用什么助手来将 html 代码 填充为 view 中的 string?
这是我目前在我的模型中使用的方法:
def state_country_name
"#{self.name} (#{self.country.name})"
end
我想用class: pull-right 将{self.country.name} 包裹在一个span 中。
我已经试过了:
def state_country_name
"#{self.name} #{helpers.content_tag(:span, self.country.name, class: "pull-right")}"
end
def helpers
ActionController::Base.helpers
end
结果:
London <span>England</span>
我使用 autocomplete-rails4-gem,这是我的表单输入:
= f.input :city_name, :url => autocomplete_city_name_companies_path, :as => :autocomplete, :id_element => "#company_city_id", input_html: {:value => @company.city.name, class: 'form-control'}
我的autocomplete_city_name_companies 操作代码:
autocomplete :city, :name, :full => false, :display_value => :state_country_name, :extra_data => [:state_id]
【问题讨论】:
-
为什么要在模型中这样做?
-
是的,如前所述,在视图中 是 html 代码而不是视图中的字符串。
-
那你也应该在前端做。永远不要在模型中生成 HTML
-
@Rubioli 这对于演示者来说是一个很好的用例 - draper 相当受欢迎。这将允许您使用自动完成 gem,并以干净的方式添加该方法。
-
@Rubioli,演示者不必大而臃肿,这不是什么大事,引入该模式的好处是长期存在的。我在下面编写了一些示例代码来演示这一点。
标签: ruby-on-rails ruby model helper