これはわかりましたが、私のコメントは基本的には正しくありました。は、read_attribute
を使用して、ActiveRecordオブジェクトから値を取得し、メソッドを使用しないで値を取得するRailsフォームヘルパを利用しています。永続性/ドメイン/プレゼンテーションのカップリングの症状。これを回避する方法は次のとおりです。
<%= 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 %>
** in Rails 3 lib
がデフォルトでロードパスに追加されているとは思わないので、追加してアプリを再起動する必要がありますまたはapp/models
に入れてください(免責事項は良い考えではありませんが、libはより良いです)。
私は同じ問題を抱えている、私の推測では、 'simple_form'、または可能性が高いレールである'、ヘルパーを形成read_attribute' '使用の代わりに、 s ActiveRecordオブジェクトから入力値を取得します。 – Kris