У меня есть модель с одним параметром, который является сериализованным Hash.Я хочу иметь возможность редактировать хэш в форме, используя встроенные функции рельсов.Это почти работает.Если вы заполните форму и отправите ее, параметры будут правильно сериализованы, и в контроллере будет построена модель с ожидаемыми значениями.Когда он распадается, я хочу, чтобы форма отображала существующую модель: ни одно из значений не отображается в полях формы.
Моя модель выглядит следующим образом:
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 %>
И в методе создания контроллера:
@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>
Таким образом, вы можете видеть значения, полученные POSTed.
На мой взгляд, над формой я добавил эту строку, чтобы посмотреть, смогу ли я хотя бы получить доступ к значениям:
<%= @search[:params][:min_square_footage] %>
И смогу.
Так что если я смогудоступ к значениям в моем представлении, и форма успешно отправляет данные в мой контроллер, почему моя форма не может отображать данные?