Spree 管理ビューの 1 つに既に存在するフォームに入力を追加しようとしています。オーバーライド テキストは次のとおりです (表示中心でノイズの多い部分を切り取りました)。
new_html = "
<div id='neato_new_field'>
<p id='product_display_value'>
<label for='display_value'>Display Value</label>
<br>
<input type='text' name='product[display_value]' size='30' id='product_display_value' value=''>
</p>
</div>"
Deface::Override.new(:virtual_path => "spree/admin/products/_form",
:insert_after => "div.clearfix",
:text => new_html,
:name => "add_display_value")
方法を知る必要があるのは、入力の「値」プロパティの値を設定して、このビューがレンダリングされるときにそのオブジェクトに現在あるものを取得することです。
そこに value='#{@product.display_value}' を入れてみましたが、@product が nil であると不平を言っています。そのような補間を使用して、display_value を取得することはできますか? この改ざんは、コントローラーがレンダリングを試みる前または後に行われますか?
これにどう対処するか、今考え中です。既にある html から製品 ID をすくい取り、それを使用して製品をロードし、その値をそこに入れる必要がありますか? これを解決するのが簡単な問題にする基本的な何かが欠けていることを本当に望んでいます:P それはSpreeのカスタマイズの多くに当てはまります-最初はどうすればよいのかわかりませんが、いったん理解すると私のカスタマイズを実装するのはとても簡単です...
ありがとう、jd