form_for を吐き出す draper デコレーターでメソッドを作成しようとしています。インデックス ビューでレコードを検索するために使用しているフォームがあり、数十のリソースがあるため、可能であればこのロジックを 1 か所 (アプリケーション デコレータ) に維持したいと考えています。私の問題は、デコレータで form_for をレンダリングする方法がわからないことです。concat と capture を使用してこれを達成しようとしましたが、運がありませんでした。私が取得できたのは、表示する div のカップルだけです (html としてではなく、プレーン テキストとして)。どうすればこれを行うことができるかについてのアイデアはありますか? これは私が持っているコードです:
def crud_index_search(search_obj)
h.concat "<div id='basic_search' style='display:none;'>"
search_form_for search_obj do |f|
h.concat '<div class="input-append">'
f.text_field :name_or_description_cont, :placeholder => 'Quick search ...', :id => 'search'
h.concat "<button class='btn'><i class='icon-search'></i></button>"
h.concat '</div>'
link_to 'Advanced Search', '#', :id => 'advanced_search_btn', :class => 'pull-right'
end
h.concat '</div>'
h.concat "<div id='advanced_search' style='display:none;'>"
search_form_for search_obj do |f|
f.condition_fields do |c|
h.concat render "crud/partials/condition_fields", :f => c
end
h.concat "<p>#{ link_to_add_fields 'Add Conditions', f, :condition }</p>"
f.submit 'Search'
h.concat "#{link_to 'Basic Search', '#', :id => 'basic_search_btn', :class => 'pull-right'}"
end
h.concat '</div>'
end
そして私の見解では...
<%= @categories.crud_index_search @search %>
どんな助けでも大歓迎です!
参考までに、私はすでにこれをパーシャルに入れましたが、これは機能しますが、これに追加する必要があるより複雑なロジックがあり、リソースごとに異なるため、パーシャルは私にとって理想的ではありません.
ありがとう