尝试对来自form_for字段的所有条目进行title-case,以便它们一致进入数据库进行搜索。
这是我的搜索字段(作为部分创建的文件):
<%= form_for @airport do |f| %>
Input city
<%= f.text_field :city, :value => f.object.city.titlecase %>
Input country
<%= f.text_field :country, :value => f.object.country.titlecase %>
<%= f.submit %>
<% end %>
但是当我运行它时,我得到一个NoMethodError:
undefined method 'titlecase' for nil:NilClass
我从this post开始对.object.city.titlecase
进行了说明。
有人可以帮忙吗?
答案 0 :(得分:1)
您不希望在视图中规范化数据 - 如果用户更改了提交的数据,该怎么办?相反,您可以使用before_save
(或before_validation
)回调在模型中处理它。以下是与您的模型相关的代码示例:
class Place < ActiveRecord::Base
before_save do |place|
place.city = place.city.downcase.titleize
place.country = place.country.downcase.titleize
end
end
您还可以查看the Ruby on Rails guide了解详情。
更直接地回答你的问题,这样的事情会起作用:
<%= f.text_field :city, :value => (f.object.city ? f.object.city.titlecase : '') %>
这只是意味着如果f.object.city
存在,则显示titlecase
版本,如果它不显示空白字符串。