ドロップダウンリストでユーザーが選択した値に基づいて、フォームの残りの部分がパーシャルで表示されるフォームがあります。
モデル:
Book has many supplierdetails
Supplierdetails belongs to Book
フォームコード
<% fields_for @book do |f| %>
Catalogue Number: <%= f.text_field :BK_CAT_NUM %>
<% f.fields_for :supplierdetails do |builder| %>
Supplier Type:
<%= builder.select(:SUP_TYPE,
[['A', 'A'],
['B', 'B'],
],{ :prompt => "Please select"}
) %>
<%= observe_field("book_supplierdetails_attributes_0_SUP_TYPE",
:url => { :controller => 'books', :action => :display_ab_details },
:with => "'id='+value") %>
<div id="div1"> </div>
<% end %>
<% end %>
コントローラ方式
def display_ab_details
supplier_type = params[:id]
if supplier_type == "A"
render :update do |page|
page['div1'].replace_html :partial => 'books/test_partial'
end
end
end
books / _test_partial.html.erb
Production Method: </label> <%= builder.select(:SUP_PROD_METHOD, [
['prod_1', 'prod_1'],
['prod_2', 'prod_2'],
],{ :prompt => "Please select"}
) %>
パーシャルは表示されませんが、フォームオブジェクトが原因だと思います。
'books / _test_partial.html.erb'にプレーンテキストが含まれている場合は、正しく表示されます。
rjsを介して部分的にレンダリングする場合、フォームオブジェクトをどのように処理しますか?