我有一个模型,它有一个参数,即序列化哈希。我希望能够使用内置的 Rails 功能来编辑表单中的哈希值。这是almost在职的。如果您填写表单并提交,参数将被正确序列化,并且在控制器中模型将使用预期值构建。当我希望表单显示现有模型时,它就会崩溃:表单字段中没有显示任何值。
我的模型看起来像:
class Search < ActiveRecord::Base
serialize :params
end
以及形式:
<%= form_for @search do |f| %>
<%= f.fields_for :params, @search.params do |p| %>
<%= p.label :square_footage, "Square Footage:" %>
<%= p.text_field :min_square_footage, :size => 10, :placeholder => "Min" %>
<%= p.text_field :max_square_footage, :size => 10, :placeholder => "Max" %>
<% end %>
...
<% end %>
在控制器的 create 方法中:
@search = Search.new(params[:search])
@search.params ||= Hash.new
logger.info("search = #{@search.inspect}")
在日志中:
search = #<Search id: nil, params: {"min_square_footage"=>"1200", "max_square_footage"=>"1500"}, created_at: nil, updated_at: nil>
因此您可以看到值已被发布。
在我看来,在表单上方,我添加了这一行以查看是否至少可以访问这些值:
<%= @search[:params][:min_square_footage] %>
我可以。
因此,如果我可以访问视图中的值,并且表单成功将数据 POST 到我的控制器,为什么我的表单无法显示数据?