1

Rails で手動でフォームを作成しています。

<input type="number" name="funds_application[product_revenues_attributes][1][amount]">

これは、データを送信するときは正常に機能しますが、レコードを編集しているときにフィールドが自動入力されません。レールがこれを行う方法を知っている人はいますか? <%= text_field_tag %>その部分を機能させるために a を使用する必要がありますか。

これは、Simple_form を使用している大きなフォームの一部であり、残りは期待どおりに機能します。複雑な形がレールに溶け込んでいるように見えますが、それは何を望んでいるのでしょうか?

4

2 に答える 2

2

手でやらないといけないの?フォーム ヘルパーは引き続き使用できますか?

いずれにせよ、Rails のやり方では、作業中のモデルのインスタンスを常にフォームに与え、その属性に対して getter を呼び出します。新しいインスタンスの場合、それらは空白になります。保存されたインスタンスの場合、値があります。たとえば、 and属性Userを持つモデルがある場合、コントローラーで実行でき、フォームで実行できます (ヘルパー タグを使用):loginname@user = User.new

<%= text_field_tag "login", @user.login %>
<%= text_field_tag "name", @user.name %>

また、実際のユーザー ( @user = User.first) がいる場合は、そのビューで引き続き使用できます。

基本的な原則は、作業中のモデルのインスタンスを常に提供し、属性が nil/blank の場合に使用するデフォルトを決定するためです。

したがって、常に操作するオブジェクトがあり、それを手動で行いたい場合は、次のように入力できます。

<input type="number" name="funds_application[product_revenues_attributes][1][amount]" value=@my_object.amount>

または、フィールドが実際に何であれ。このようにして、デフォルト値を取得しますが、オブジェクトがその属性に対して既に何かを持っている場合は、それを出力します。

于 2012-10-22T20:20:59.630 に答える
1

自分でフォームを作成している場合は、渡されたオブジェクトから自分でフィールドにデータを入力し、次の行に沿ってコードを入力できます。

<input type="number" name="funds_application[product_revenues_attributes][1][amount]" value="<%= @model.value %>">

ただし、これを行うための最も手ごわい方法は、form_for構成を使用することです。これに関するガイドはかなり良いです。

于 2012-10-22T20:18:17.887 に答える