3

私の ActiveAdmin アプリでは、(当面は) 1 つの日付ピッカーを表示するフォームをサイドバー (show メソッドのみ) に配置する必要があります。ユーザーが日付ピッカーをクリックすると、(ショー コントローラー内で) 選択された日付を考慮して、ページ全体がリロードされます。

この単純なフォームをサイドバーに追加する方法について何か考えはありますか?

編集

次のことを試しましたが、フォームが現在のモデル以外の専用コントローラーをターゲットにする方法がわかりません。

sidebar :history, :only => :show do
  form do |f|
    f.input :start_date, :as => :datepicker
  end
end

サイドバーのフォームが現在のモデル以外のコントローラーをターゲットにするにはどうすればよいですか?

4

1 に答える 1

1

私はあなたがショーコントローラーを持っていると思います、そしてショーアクションを意味するのではありません。

ビューを「何でも」と呼ばれる部分に作成します(私はこれと呼びます)

つまり、whatever.erb.htmlは次のようになります

<%= render "whatever" %>

Jquery Ui datepickerを使用する場合は、onSelect関数を追加できます

$(".date").datepicker({ 
            dateFormat: "yy-mm-dd", 
            onSelect: function() {
            $('#range_form').submit();          
            }
       }).attr( 'readOnly' , 'true' )

範囲が必要な場合は、ビューに2つの日付フィールドを持つフォームタグを追加します。それ以外の場合は、1つだけ追加します。

<%= form_tag('/range', :id => "range_form", :remote => true) do -%>
   <%= text_field_tag 'from', Date.now.strftime("%Y-%m-%d"),:class => "date"%>
   <%= text_field_tag 'to', Date.now.strftime("%Y-%m-%d"), :class => "date"%>
<% end %>

このためには、routes.rbにルートを追加する必要があります

match "/range/" => "show#todo_range", :as => :range

ショーコントローラーで

def range
    time_range = ((Date.parse(params[:from]).midnight..Date.parse(params[:to]).midnight)
    @whatever = Whatever.where(:date => time_range)
end

次に、コールバックを処理するためのjsビューを追加します

$(".maindiv").empty().append(<%=j(render @whatever)%>)

私はこの正確なコードをテストしていないので、タイプミスに注意してください。

編集する必要がある場合は、幸運とコメント

于 2012-12-18T14:47:13.743 に答える