私はこれを理解しました、私のコメントは基本的に正しかったです.ActiveRecordオブジェクトから値を取得するためにsimple_form
使用するRailsフォームヘルパーに依存しているため、メソッドを使用せずにデータベース内の値を読み取ります. read_attribute
永続性/ドメイン/プレゼンテーションの結合の兆候。これを回避する方法は次のとおりです。
<%= f.input :pack, :input_html => { :value => @c.pack } %>
# or
<%= f.input :pack, :input_html => { :value => f.object.pack } %>
または、これをデフォルトの動作にしたい場合は、次のsimple_for
ような上に独自のフォームビルダーを作成できます:
# 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
そしてあなたの形で:
<%= simple_form_for @c, :builder => MyFormBuilder do |f| %>
<%= f.input :pack %>
<% end %>
** Rails 3 では、 がデフォルトでロード パスに追加されるとは思わないので、追加してアプリを再起動するか、アプリにlib
追加する必要があるかもしれません(免責事項は良い考えではありません。lib の方が優れています)。app/models