Tôi nhận ra điều này, nhận xét của tôi về cơ bản là chính xác, simple_form
dựa trên các trình trợ giúp biểu mẫu Rails sử dụng read_attribute
để lấy giá trị từ đối tượng ActiveRecord do đó đọc giá trị trong cơ sở dữ liệu và không sử dụng phương pháp của bạn. Một triệu chứng của khớp nối bền vững/tên miền/trình bày. Các khoảng cách này là:
<%= f.input :pack, :input_html => { :value => @c.pack } %>
# or
<%= f.input :pack, :input_html => { :value => f.object.pack } %>
Hoặc nếu bạn muốn trở thành hành vi mặc định này, bạn có thể tạo xây dựng hình thức riêng của bạn trên đầu trang của simple_for
như:
# lib/my_form_builder.rb **
class MyFormBuilder < SimpleForm::FormBuilder
def input(attribute_name, options={}, &block)
options[:input_html] ||= {}
options[:input_html][:value] = object.send(attribute_name)
super(attribute_name, options, &block)
end
end
Và trong hình của bạn:
<%= simple_form_for @c, :builder => MyFormBuilder do |f| %>
<%= f.input :pack %>
<% end %>
** trong Rails 3 Tôi không nghĩ rằng lib
được thêm vào đường dẫn tải theo mặc định để bạn có thể cần phải thêm nó và khởi động lại ứng dụng hoặc đặt nó trong app/models
(từ chối trách nhiệm không phải là một ý tưởng hay, lib là tốt hơn).
tôi có cùng một vấn đề, tôi đoán là 'simple_form', hoặc đường ray nhiều khả năng hình thành những người giúp đỡ, sử dụng 'read_attribute' thay vì' S end' để lấy các giá trị đầu vào từ các đối tượng ActiveRecord. – Kris